java - 对于循环执行,增加困惑

标签 java arrays eclipse for-loop

我不明白为什么 fillArray 方法中的 i 最终等于 10 即使数组分数仅被填充到索引9

根据我的理解,i必须小于10,那么最后怎么会是10呢,它应该已增加。

我尝试了另一个循环来测试 for 循环是否在条件为真时在最后执行增量。

在测试循环中,i 最终只有 10,这是有道理的,但两个 for 循环相互矛盾。

public class GoldScores {
        public static final int MAX_NUMBER_SCORES = 10;
        public static void main(String[] args) {
            double[] score = new double[MAX_NUMBER_SCORES];
            int numberUsed = 0;

            System.out.println("This program reads gold scores and shows");
            System.out.println("how much each differs from the average.");
            System.out.println("Enter gold scores:");
            //numberUsed = fillArray(score);
        //  showdifference(score,numberUsed);
             for(int i=1; i<11; i++){                   //Test loop
                 System.out.println("Count is: " + i);
            }
        }
        private static void showdifference(double[] score, int numberUsed) {
            // TODO Auto-generated method stub

        }
        public static int fillArray(double[] a){
            System.out.println("Enter up to " + a.length + " nonnegative numbers.");
            System.out.println("Mark the end of the list with a negative number.");
            Scanner keyboard = new Scanner(System.in);

            double next = keyboard.nextDouble();
            int i = 0;
            for(i = 0;(next>=0 && i<a.length);i++){     //HELP!!!!
                a[i] = next;
                next = keyboard.nextDouble();
            }
            return i;
        }

最佳答案

您必须准确理解 for 是如何工作的循环可以理解正在发生的事情以及原因 i10 for之后循环输入fillArray .

  1. 在第一个分号之前执行初始化。
  2. 测试第一个和第二个分号之间的条件。如果条件是false ,跳出循环。
  3. 执行循环体。
  4. 执行第二个分号(增量)后的语句。
  5. 返回第 2 步。

i 的最后一次迭代中for循环,i9 ,和索引 9被分配到数组中,步骤 3。步骤 4 执行增量,并且 i现在是10然后测试条件,即 false ,然后退出循环。 i现在是10 .

但是,在您的 mainfor循环时,您可以打印主体中的值,而不是事后检查循环变量。最后一次迭代是在 i 时是 10 ,因为条件不同:i < 11 。如果您要打印 i之后for循环,你会看到它是 11 .

关于java - 对于循环执行,增加困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30879998/

相关文章:

java - 如何在Eclipse中快速查找/切换到调试当前指令指针

ruby - Eclipse(在 OS X 10.9 上)默认内置 Ruby 2.0 但需要 1.8.7

java - 动态生成基元并将其存储在 ArrayList 中

arrays - 在specflow中传递变量数组

java - 如何在继续当前线程之前等待事件发生?

使用结构体指针函数创建结构体数组的元素

c - 读取由 12 个数字组成的数组,每个数字之间有空格 - C 编程

java - 想学Android开发,不懂Java

java - Guava Hasher 有时对同一对象给出不同的结果

java - 有没有办法在没有 org.bson.types.ObjectId 的情况下使用 Mongo/Morphia ?