如何使用java反转打印模式

时间:2017-05-06 04:57:51

标签: java

我编写的代码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

2 个答案:

答案 0 :(得分:2)

您的代码存在一些问题,导致其无法编译

  • 你需要在for循环中声明i和j。
  • 需要通过Integer.parseInt(num)
  • 将String num转换为整数 第一个for循环中不需要
  • -1(除非您将延续条件更改为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)

我对您的代码做了一些更改,并评论了它们是什么。我...

  1. 声明Scanner方法,名为input

  2. 制作num类型int(而不是String

  3. i循环中声明jfor

  4. 修复了第一个for循环(曾经是i=num-1,应该是i=num)。

  5. 代码如下所示:

    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