我编写的代码If num = 8
应该显示如下输出,但是代码没有显示结果,是否有任何一个帮助我的错误?
System.out.printf("Enter number of row for pattern to show : ");
int num = input.nextInt();
for(i=num-1;i>0;i--){
for(j=1;j<=i;j++){
if((i+j)%2==0)
System.out.print(0);
else
System.out.print(1);
}
System.out.println();
}
预期产出:
10101010
010101
01010
1010
010
10
0
答案 0 :(得分:2)
您的代码存在一些问题,导致其无法编译
Integer.parseInt(num)
i >= 0
而不是i > 0
)修复这些......
for (int i = Integer.parseInt(num); i > 0; i--) {
for (int j = 1; j <= i; j++) {
if ((i + j) % 2 == 0) {
System.out.print(0);
} else {
System.out.print(1);
}
}
System.out.println();
}
这给出了稍微不同的输出,即原始问题不输出长度为7的行,它从8变为6.另外,第6行被一个&#39;关闭。这几乎肯定是原始问题中的一个错字。
Original question My output
1) 10101010 10101010
2) <= missing => 0101010
3) 010101 101010 <== mismatch. expected ends in 1
4) 01010 01010
5) 1010 1010
6) 010 010
7) 10 10
8) 0 0
这可以解决
for (int i = Integer.parseInt(num); i > 0; i--) {
if (i == 7) {
continue; // conform to broken question
}
if (i == 6) {
System.out.println("010101"); // conform to broken question
continue;
}
...
现在提供预期的输出
10101010
010101
01010
1010
010
10
0
答案 1 :(得分:0)
我对您的代码做了一些更改,并评论了它们是什么。我...
声明Scanner
方法,名为input
制作num
类型int
(而不是String
)
在i
循环中声明j
和for
修复了第一个for
循环(曾经是i=num-1
,应该是i=num
)。
代码如下所示:
Scanner input = new Scanner(System.in); //created Scanner method
System.out.printf("Enter number of row for pattern to show : ");
int num = input.nextInt(); //num should be of type 'int', not String
for(int i=num; i>0; i--) { //Declared 'i', 'i' should equal 'num', not 'num-1'
for(int j=1; j<=i; j++) { //Declared 'j'
if((i+j)%2==0)
System.out.print(0);
else
System.out.print(1);
}
System.out.println();
}
当num
为8时,您将获得所需的输出:
Enter number of row for pattern to show : 8
10101010
0101010
101010
01010
1010
010
10
0