Java 不明白循环是如何决定要打印多少星号的

Java 不明白循环是如何决定要打印多少星号的,java,Java,我是学习Java的初学者。我偶然发现了一个我无法解决的问题。代码中的循环如何决定要打印多少星号。我一直在看这部分代码 asterisk < myArray[counter] asterisk

我是学习Java的初学者。我偶然发现了一个我无法解决的问题。代码中的循环如何决定要打印多少星号。我一直在看这部分代码

asterisk < myArray[counter]
asterisk
有人能用最简单的术语解释一下它是如何工作的吗?因为每次我想到计数器,我都会把它看作是循环中它当时指向的索引

public class Main {

    public static void main(String[] args) {

        int[] myArray = {12, 7, 9, 11, 23};

        System.out.println("Value Distribution");

        //Start of outer for loop
        for( int counter = 0; counter < myArray.length; counter++){

            //Start of inner for loop
            for( int asterisk = 0; asterisk < myArray[counter]; asterisk++)

                System.out.print("*");

            System.out.println();

        }//End of outer for loop
公共类主{
公共静态void main(字符串[]args){
int[]myArray={12,7,9,11,23};
System.out.println(“价值分布”);
//外部for循环的开始
用于(int计数器=0;计数器
简单地说

asterisk < myArray[counter]
asterisk
这意味着它正在检查星号的数量是否小于myArray[counter]中的值

所以当你有
计数器=0
你也有 myArray[计数器]=12


这意味着在内部for循环中,它将打印星号,直到
asterisk
不再小于12。因此,从0到11将打印12个星号。

您突出显示的行正在测试循环索引
asterisk
是否小于
myArray
数组索引
计数器中的值

由于
计数器
是第一个循环的索引变量,因此每次执行外部循环时,该值都会增加

因此,在外循环的第一次迭代中,内循环重复,直到
星号
大于或等于12(索引0处myArray的值)

在外循环的第二次迭代中,内循环重复,直到
星号
大于或等于7(索引1处myArray的值)

等等

这就是程序输出以下内容的原因:

************
*******
*********
***********
***********************
换句话说

  • 对于
    {12,7,9,11,23}
    • 打印
      *
      X
  • 打印新行
每次我想到计数器,我都会把它看作是循环中它当时指向的索引

正确。
counter
myArray
的位置。您需要它来访问
myArray[counter]
处的值,以确定要打印的星号数

但是,在不使用
计数器的情况下,通过使用

for(int howManyAsterisks:myArray){
对于(inta=0;a
简单地说,第一个循环运行到数组
'myArray'
的长度,在本例中等于5。然后第二个循环每次运行到
'myArray'
中各个项目的长度(即第一次运行12次,第二次运行7次,依此类推)


希望这对您有所帮助。

解释如何工作的问题问题是,我们不知道您真正理解的是什么-我们很容易浪费时间解释您确实理解的东西,而不是实际解决您遇到的特定问题。使用调试器逐步完成代码,阅读有关循环的教程。提示:缩进在Java中并不重要。换句话说,
System.out.println();
不在内部循环中您是对的,
计数器实际上只是外部循环的循环索引。这会让您感到困惑吗?我不明白代码是如何知道要打印多少星号的。
for (int howManyAsterisks : myArray) {
    for (int a = 0; a < howManyAsterisks; a++) System.out.print("*");
    System.out.println();
}