我没有为这个嵌套for循环的想法

时间:2015-09-16 03:54:56

标签: java for-loop nested

所以我正在尝试练习Java。我是初学者。 我有这个练习,需要我编写一个嵌套的for循环。

结果应该是:

Enter the size:4
Triangle is:
1
22
333
4444

Enter the size:6
Triangle is:
1
22
333
4444
55555
666666

这是我的代码:

public static void main(String arg[]){

Scanner scanner = new Scanner(System.in);

System.out.println("Enter the size:");
int size=scanner.nextInt();
System.out.println("Triangle is:");

//add your nested for loop logic here
//start
for(int i = 1; i <= size; i++)
{
    System.out.println(i);
    for(int j = 1; j < size; j++)
{

}

我试图绕过它,但我似乎无法想到另一种方式。 那么我需要做什么?

2 个答案:

答案 0 :(得分:4)

使用以下循环:

for (int i = 1; i <= size; i++) {
     for (int j = 1; j <= i; j++) {
           System.out.print(i);
     }
     System.out.println();
 }

这将产生:

Enter the size: 4 Triangle is: 1 22 333 4444

内部循环将打印数字ii次,因为变量j1i。然后在下一行我们引入一个新行。

答案 1 :(得分:0)

除了已经说过的内容之外,我还想提几件事。

  1. 在尝试将其实现到代码中之前,您应该尝试在脑海中排列您在算法设计中所做的事情。在这种情况下,您实际需要做什么才能使三角形显示出来?首先,您需要跟踪您所在的行,然后跟踪您在该行中的哪一行。用户在size中指定了最大行数,因此您将停在那里。然后,对于每一行,您将打印一个字符,这也恰好是行号。最大列数与您所在的行相同,因为它应该是一个三角形。因此,您需要size而不是再次停留在row。由于您甚至在知道自己所依据的列之前就已经完成了打印,这表明您可能没有先在纸上完全设计算法。&#34;

  2. 最好在他们实际指向的变量之后尝试命名变量,而不仅仅是一个任意字母,例如&#34; i&#34;或&#34; j&#34;。当他们只是为了跟踪有多少次迭代时,使用这些任意变量通常很常见,但是当你在循环中引用它们时,有一个好处就是它们的可读性合理命名。当您刚刚开始时,这更为重要,因此您可以跟踪您实际在做什么!你可能想要考虑这样的事情:

    for (int row = 1; row <= size; row++)
    {
        for (column = 1; column <= row; column++)
        {
            System.out.print(row);
        }
        System.out.println();
    }
    

    通过这种方式,您还可以在代码中看到您正在打印行号,而不是仅仅使用某个计数器。

  3. 这对我来说可能真的很挑剔,但文字提示通常总是在提示的同一行输入,而不是在下一行。因此,使用println()代替System.out.print("Enter the size: ");可能会更好(也请注意冒号后面的空格)。

  4. 希望这有帮助!