具有特定输出的三重嵌套For循环(java)

时间:2017-10-02 05:35:34

标签: java algorithm for-loop

我需要用3"来编写一些java用于"输出

的循环

122333444455555

22333444455555

333444455555

444455555

55555

到目前为止我的代码:

public static void problemFour() {
      for(int i = 5; i >= 1; i--) {
         for(int a = 1; a <= i; a++) {
            for(int b = 1; b <= a; b++) {
               System.out.print(a);
            }
         }
         System.out.println();
      }
   }

此输出

111112222333445
11111222233344
111112222333
111112222
11111

我已经改变了很多++的组合 - &#5;&#5;&#39; s,&#39; s&#39; s和1&#39; s。

我很困惑,如果有人能指出我正确的方向,那就太棒了。

5 个答案:

答案 0 :(得分:5)

你在线的开始方式以及数字(此处字符)重复的次数上犯了错误。修复它:

for(int i = 1; i <= 5; i++) {          // Each iteration for one line
    for(int a = i; a <= 5; a++) {      // starts with a for ith line
        for(int b = 1; b <= a; b++) {  // a times `a` digit
            System.out.print(a);
        }
    }
    System.out.println();
}

简单您的问题,请先考虑打印此模式:

12345
2345
345
45
5

然后扩展它:在最里面的循环中,将重复的代码等于数字时间,使用:

for(int b = 1; b <= a; b++) {  // a times `a` digit
     System.out.print(a);
}

答案 1 :(得分:1)

我们可以使用数字1仅打印一次,2两次,3三次等的观察结果。

firstValueInLine保持行开始的数字; number是正在打印的数字; counter只是确保number打印number

    for (int firstValueInLine = 1; firstValueInLine <= 5; ++firstValueInLine) {
        for (int number = firstValueInLine; number <= 5; ++number) {
            for (int counter = 0; counter < number; ++counter) {
                System.out.print(number);
            }
        }
        System.out.println();
    }

答案 2 :(得分:1)

您可以尝试以下操作。它会起作用。

// 1st version where I only blacklisted 8
var randomNumbers = [Int]()
for _ in 1...7 {
    var number = Int(arc4random_uniform(8))+1
    while  randomNumbers.contains(number) || number == 8{
        number = Int(arc4random_uniform(8))+1
    }
    randomNumbers.append(number)
}
print(randomNumbers)

// 2nd version where I created an array of blacklisted numbers
var randomNumbers = [Int]()
var blackList = [8, 5, 2, 7]
for _ in 1...3 {
    var number = Int(arc4random_uniform(10))+1
    while  randomNumbers.contains(number) || blackList.contains(number){
        number = Int(arc4random_uniform(10))+1
    }
    randomNumbers.append(number)
}
print(randomNumbers)

<强>输出:

  public static void problemFour() {
    for (int i = 1; i <= 5; i++) {
      for (int a = i; a <= 5; a++) {
        for (int b = 1; b <= a; b++) {
          System.out.print(a);
        }
      }
      System.out.println();
    }
  }

答案 3 :(得分:0)

这里是,使用第一个for循环获取行数,第二个for循环获取要打印的数字。第3个for循环打印所需数量的显示数字。 你所做的是相反的。所以让你的代码反转。

试试这个

public static void problemFour() {
      for(int i = 1; i <= 5; i++) {
         for(int a = i; a <= 5; a++) {
             for(int b=0;b<a;b++){
               System.out.print(a);  
             }                
         }
         System.out.println();
      }
   }

答案 4 :(得分:0)

查看内联评论。

122333444455555
22333444455555
333444455555
444455555
55555

输出:

{{1}}