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