我被要求创建一个java程序,它将显示一个倒金字塔的数字(仅从1到9)。与用户输入多少行数。
我不知道如何循环,并将数字限制在9,并将其更改为右侧。
我的代码是:
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.print("Enter height:\t");
int height = sc.nextInt();
for (int row = height; row >= 1; row--) {
for (int col = 1; col <= row; col++) {
System.out.print("");
}
for (int k = 1; k <= row; k++) {
System.out.print(row + "");
}
System.out.println();
}
}
}
产出如下:
Enter height: 12
121212121212121212121212
1111111111111111111111
10101010101010101010
999999999
88888888
7777777
666666
55555
4444
333
22
1
产出应是:
Enter height: 12
111111111111
22222222222
3333333333
444444444
55555555
6666666
777777
88888
9999
111
22
3
或:
Enter height: 20
11111111111111111111
2222222222222222222
333333333333333333
44444444444444444
5555555555555555
666666666666666
77777777777777
8888888888888
999999999999
11111111111
2222222222
333333333
44444444
5555555
666666
77777
8888
999
11
2
发布于 2022-01-06 11:44:51
您的主循环正在从高度运行到0,这将导致您打印的数字从高度降到1,这是输出期望它按升序进行的。
输出还期望任何大于9的值再次被视为个位数增量,因此在9之后再次出现1,而不是10。
您可以通过添加空格来编写,但是要在java中添加空间,实际上必须在两者之间添加空间“。
示例:
System.out.print(" ").
解决上述所有问题的代码片段应该如下所示:
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.print("Enter height:\t");
int height = sc.nextInt();
for (int row = 1; row <=height; row++) {
for (int space = 1; space < row; space ++) {
System.out.print(" ");
}
for (int val = row ; val <= height; val++) {
if(row>9){
System.out.print(row%10+1);
}
else{
System.out.print(row);
}
}
System.out.println();
}
}
https://stackoverflow.com/questions/70606385
复制相似问题