Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用计数器_Java - Fatal编程技术网

Java 如何使用计数器

Java 如何使用计数器,java,Java,我试图创建一个计数器控制的while循环。目前,我很难让计数器在每次通过环路时增加1 我将代码设置为 int numberCounter = 0; // Numbers 0 through 10. String head1 = "Number: " + numberCounter; String head2 = " Multiplied by 2: " + numberCounter * 2; String head3 = " Multiplied

我试图创建一个计数器控制的while循环。目前,我很难让计数器在每次通过环路时增加1

我将代码设置为

int numberCounter = 0;  // Numbers 0 through 10.        
String head1 = "Number: " + numberCounter;      
String head2 = " Multiplied by 2: " + numberCounter * 2;        
String head3 = " Multiplied by 10:  " + numberCounter * 10;                      
int byTwo;     // Stores the number multiplied by 2.    
int byTen;     // Stores the number multiplied by 10.
final int NUM_LOOPS = 11; // Constant used to control loop.

     // This is the work done in the housekeeping() method
System.out.println("Numbers 0 through 10 multiplied by 2 and by 10" + "\n");
System.out.println(head1 + head2 + "\n");
System.out.println(head1 + head3 + "\n");
while (numberCounter != 10) numberCounter = numberCounter + 1;

System.out.println(head1 + head2 + "\n");
System.out.println(head1 + head3 + "\n");
但它只读取0值,并在一次传递后退出

我希望每次传球都能在柜台上加一个,但似乎都是0。我这样说是因为输出内容如下:

数字0到10乘以2和10

数字:0乘以2:0

数字:0乘以10:0

数字:0乘以2:0


数字:0乘以10:0,如注释中所述,确保计数器变量从0开始:

int numberCounter = 0;
while (numberCounter != 10) {
   System.out.println(numberCounter);
   numberCounter = numberCounter + 1; // or numberCounter++;
}
更新

发布完整代码后,似乎很明显,您希望整数的每次迭代都会更改分配给字符串的值,例如
head2
&
head3
这是错误的。在初始化这些字符串变量时,整数被转换为该变量内的字符串(因为使用了字符串串联)。要查看迭代整数的效果,可以在循环中添加以下println语句,例如:

while (numberCounter != 10) {
     numberCounter = numberCounter + 1;
     System.out.println(" Multiplied by 2: " + numberCounter * 2);
     System.out.println(" Multiplied by 10: " + numberCounter * 10);
}

这应该行得通(假设
numberCounter
不是以值10开头),您需要向我们展示更多的代码,看看哪里出了问题。该代码应该行得通。你说“它只读取0值”是什么意思?是什么让你认为“但它只读取0值并在一次通过后退出”?使用option来澄清您的问题。这不是
for
循环的确切用例吗?您似乎有这样的印象:当您有
字符串head1=“Number:”+numberCounter
之后,您更改了
numberCounter
的值,则
head1
保存的数据也应更改/更新。事实并非如此。字符串的值在其创建时确定,并且从不更改。就像你有
inta=1之后,您编写
intb=a您的
b
将保存其自己的值1副本,该值当时保存在
a
中。即使以后将
a
赋值为其他值,如
a=3
b
仍将保留其自己的1副本。我确实将数字计数器初始化为0,我可能输入了错误的内容,或者问题可能是我使用的是在线编译器(工作计算机)。我刚刚编辑了我的问题以包含更多代码。这样做了!我仍在试图弄清楚这是怎么回事,但我想我明白了。一个小提示是,现在计数从1开始,所以我将numberCounter初始化为-1,这样我可以先乘以0。除此之外,这种方法是完美的!谢谢,@funkyjelly@Edwin查看整数的0值效果的正确方法是更改while循环中的顺序:首先进行打印(查看0值的结果),然后增加值。现在,首先递增该值,这样就不会看到0