嵌套for循环0123

时间:2016-04-01 16:36:18

标签: java nested-loops

我需要创建一个嵌套的for循环,它提供以下输出,

0
 1
  2
   3

这就是我所拥有的,但是对于第二次测试,userNum被替换为6,显然我的代码失败了..帮助?

    public class NestedLoop {
    public static void main (String [] args) {
      int userNum  = 0;
      int i = 0;
      int j = 0;

       for(i = 0; i <= userNum; i++){
        System.out.println(i);

           for(i = 1; i <= userNum; i++){
           System.out.println(" " +i);

              for(i = 2; i <= userNum; i++){
               System.out.println("  " +i);

                 for(i = 3; i <= userNum; i++){
                 System.out.println("   " + i);

          }
         }
        }
       }
         return;
   }
}

4 个答案:

答案 0 :(得分:0)

我认为(这是猜测),你正在寻找这个。

public static void main (String [] args)
{
  int limit = 6;

  for(int i = 0; i <= limit; i++)
  {
    for(int j = 0; j < i; j++)
      System.out.print(" ");
    System.out.println(i);
  }
}

正如我所看到的那样,您的方法失败的原因是,您正在循环显示数字(正确)您无法循环查看空格数(我通过将内循环的限制与外循环的当前值相关联来解决。

答案 1 :(得分:0)

让我们谈谈你对这些循环的意图。

内部循环意味着产生任意数量的空格,具体取决于您重复使用的数字。因此,如果您在数字0上,则不会产生空格,如果您在1上,则会产生一个空格,依此类推。另一个警告是,所有必须出现在同一行,因此System.out.println是不正确的选择。

您可能希望使用System.out.print打印出空格。所以,让我们写下来。

for(int j = 0; j < 6; j++) {
    System.out.print(" ");
}

这将无条件打印出六个空格。 的条件取决于我们正在迭代的当前数字。这来自你的外循环。

你只需要定义一个从任意起始点开始的循环 - 比如0 - 然后循环直到你最多你的结束号。为此,您的当前循环就足够了:

for(i = 0; i <= userNum; i++) {

}

现在,我们需要将两个部分组合在一起。我把这个问题留下了问号以及在之后打印的内容,你已经将这些空间作为练习打印给用户,记住你必须在你之后停止打印空格。已达到你的号码。

for(int i = 0; i <= userNum; i++) {
    for(int j = 0; j < ?; j++) {
        System.out.print(" ");
    }
}

答案 2 :(得分:0)

让我们分析一下这个任务 在每一行中,我们都应在数字的前面打印一个数字和不同的数字空格 为此,我们需要两个循环 - 一个外部从0到N迭代,一个内部在数字前面添加空格。

private static void method1(int userNum) {
    int nummSpaces = 0;
    for (int i = 0; i <= userNum; i++) {
        for (int j = 0; j < nummSpaces; j++) {
            System.out.print(" ");
        }
        nummSpaces++;
        System.out.println(i);
    }
}

在这个解决方案中,我们有变量numSpaces,它用于计算数字前面的空格数。它是不必要的 - 我们可以为此目的使用变量i

private static void method2(int userNum) {
    for (int i = 0; i <= userNum; i++) {
        for (int j = 0; j < i; j++) {
            System.out.print(" ");
        }
        System.out.println(i);
    }
}

让我们再次分析输出
  - 第一行:打印零空格和数字0   - 第二行:打印一个空格和数字1   - 第三行:打印两个空格,编号为2   - 等等

最后,我们只能使用一个包含空格的变量,然后打印出它的长度:

private static void method3(int userNum) {
    for (String spaces = ""; spaces.length() <= userNum; spaces += " ") {
        System.out.println(spaces + spaces.length());
    }
}

答案 3 :(得分:0)

C / C ++

#include <iostream>
using namespace std;

int main() {

int userNum;
int i;
int j;

cin >> userNum;

for (i = 0; i <= userNum; ++i) {
    for (j = 0; j < i; ++j) {
        cout << " ";
    }
    cout << i << endl;
}
return 0;
}