扫描仪无法正常工作

时间:2015-09-02 08:15:48

标签: java for-loop

所以我正在努力学习Java。我写了一个简单的程序,我使用for循环并获取用户输入。

public static void main (String[] args)
{   
    Scanner scan = new Scanner(System.in);
    int number, numberOfValues, totalNumberOfRuns = 0;
    System.out.println("How many values?");
    numberOfValues = scan.nextInt();


    for (int w = 0; w < numberOfValues; w++)
    {
        System.out.println("Enter a number:" + "(" + numberOfValues-- + ")");
        number = scan.nextInt();    
        totalNumberOfRuns += number;
    }
        System.out.println("The total is " + totalNumberOfRuns);    
}       
}

结果是:

How many values? 5 Enter a number:(5) 4 Enter a number:(4) 74 Enter a number:(3) 54 The total is 132

我想要做的是继续Enter a number:(1)

我知道将numberOfValues放入for循环中的System.out.println是错误的。我只是在试验看看会发生什么。但是我没有想法。

任何帮助将不胜感激:)

4 个答案:

答案 0 :(得分:4)

您可以使用numberOfValues - w代替numberOfValues--。这将解决问题。

 System.out.println("Enter a number:" + "(" + (numberOfValues - w) + ")");

答案 1 :(得分:1)

您需要将循环修复为:

for (int w = 0; w < numberOfValues; w++)
        {
            System.out.println("Enter a number:" + "(" + (numberOfValues-w) + ")");
            number = scan.nextInt();
            totalNumberOfRuns += number;
        }

您的代码存在以下问题:

  1. 您的循环从w=0w=numberOfValues-1
  2. 在每次循环迭代中,您还通过执行numberOfValues--来减少numberOfValues的值。
  3. 那么5实际发生的是:
  4. w=0, numberOfValues = 5 w=1, numberOfValues = 4 w=2, numberOfValues = 3 现在循环结束了。

    列出项目

答案 2 :(得分:0)

如果不需要递减numberOfValues的值,则可以使用w并按以下方式编写for loop -

 for (int w = numberOfValues; w>0; w--){
   System.out.println("Enter a number:" + "(" + w + ")");
   ...
}

这将按预期工作。

答案 3 :(得分:0)

您的for循环条件不正确。使用numberOfValues > 0代替w < numberOfValues

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int number, numberOfValues, totalNumberOfRuns = 0;
        System.out.println("How many values?");
        numberOfValues = scan.nextInt();

        for (int w = 0; numberOfValues > 0; w++) {
            System.out.println("Enter a number:" + "(" + numberOfValues-- + ")");
            number = scan.nextInt();
            totalNumberOfRuns += number;
        }
        System.out.println("The total is " + totalNumberOfRuns);
    }