如何使用嵌套for循环?

问题描述:

这是我的代码如何使用嵌套for循环?

public static void main (String[] args) 
{ 
    Scanner keyboard = new Scanner (System.in); 

    int tri, a; 
    int b; 

    System.out.println("Enter the size you want your triangle to be:"); 

    tri = keyboard.nextInt();  

    for (a = 1; a <= tri; a++) 
    { 
     for (b = 1; b <= a; b++) 
     { 
      System.out.print("*"); 
     } 

    } 
} 

当我运行,并进入前。 3我想要的代码说

enter image description here

我知道我可能会丢失一些圈,因为我只在代码的开始阶段。我正在奔跑,看看是否所有事情都按照我的意愿去做,事实并非如此。当我进入3我在一行中得到的一切:

******

帮助解释,将不胜感激。

system.out.println(); 

这使得*的是不同的路线,也验证码:
应该与任意数量的不只是3

+1

这是之前问。这可以通过递归方法来完成。 –

+0

你需要通过''System.out.println();'在代码中的某处告诉计算机何时应该到达下一行。 –

+0

@huseyintugrulbuyukisik确定它*可以*。然而,问题是关于嵌套for循环。 –

这需要每一个外循环被访问的时间内完成工作只做三角形的上半部分。为了做下半场,你必须从三分钟开始倒数。

您需要对代码进行两处更改。首先,您需要在外部循环的每次迭代中结束该行。其次,你需要做三角形的底部。这里的代码,不会它既:

public static void main (String[] args) 
{ 
    Scanner keyboard = new Scanner (System.in); 

    int tri, a; 
    int b; 

    System.out.println("Enter the size you want your triangle to be:"); 

    tri = keyboard.nextInt();  

    for (a = 1; a <= tri; a++) 
    { 
     for (b = 1; b <= a; b++) 
     { 
      System.out.print("*"); 
     } 
     // this next call ends the current line 
     System.out.println(); 
    } 
    // now for the bottom of the triangle: 
    for (a = tri - 1; a >= 1; a--) { 
     for (b = 1; b <= a; b++) 
     { 
      System.out.print("*"); 
     } 
     System.out.println(); 
    } 
} 
+0

这给OP的问题提供了整个解决方案,所以确实是一个解决方案。我虽然这是一个练习,OP使用'System.out.print'和'System.out.println'有问题,然后让OP继续处理这个新的方法。 –

+0

谢谢,但究竟是什么做System.out.println(); 我的意思是该程序如何知道在第一行放置1 *,在第二行放置2 *等等。我只是很难理解和理解这个背后的思想过程。 – xpression

+0

@xpression - 它开始一个新行。 (把它看作是打印一个空白行,除了以前调用'System.out.print()'的时候可能已经有东西了。) –

System.out.print打印一切都在电流输出缓冲区即控制台。您必须使用System.out.println(请注意ln后缀)打印某些内容和中断线。

或者只是一个循环:

int x = 3; // input tri 
var y = x*2; 

for (int i = 0; i < y; ++i) { 
    for (int j = 0; j < (i < x ? i : y-i); ++j) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
}