Java中的多个数字求和循环

时间:2013-11-04 15:08:25

标签: java loops

我完全不熟悉编程并在我的Uni中使用Java 101并且已经在这个问题上奋斗了一个小时,搜索网络而不是理解错误。

因此,练习是制作一个程序,提示数字,读取它们并对它们求和,直到用户输入0并且程序终止。我的问题是我的程序忽略了我输入的第一个数字,我总是要输入两次。似乎循环是问题,但我怎么知道呢?这是我到目前为止的代码:

import java.util.Scanner;

public class SumOfMultipleNumbers {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int sum = 0;               

        while (true) {
            int read = Integer.parseInt(reader.nextLine());
            if (read == 0) {
                break;
            }

            read = Integer.parseInt(reader.nextLine());
            sum += read;

            System.out.println("Sum now: " + sum);
        }

        System.out.println("Sum in the end: " + sum);
    }
}

那么如何更正我的代码,以便每次输入数字而不是每隔一次输入时它会增加总和?

4 个答案:

答案 0 :(得分:1)

你正在打电话

read = Integer.parseInt(reader.nextLine());

每个循环两次

一旦宣布read

int read = Integer.parseInt(reader.nextLine());

然后再检查零

read = Integer.parseInt(reader.nextLine());

你只需要做一次


您可能想要使用的是do while循环

do
{
    // read variable in
    // print for sum
}while(variableReadIn != 0);

答案 1 :(得分:1)

那是因为你在检查零输入后读了一行。

while (true) {
    int read = Integer.parseInt(reader.nextLine());
    if (read == 0) {
        break;
    }

    // this is not needed: read = Integer.parseInt(reader.nextLine());
    sum += read;

答案 2 :(得分:0)

你在循环开始时调用reader.nextLine(),以确定是否应该中断循环,然后再次执行以获得实际数字总和。这就是你的代码第一次忽略输入值的原因。

您要做的只是致电reader.nextLine()一次,并检查退出条件的值。我可能会这样做:

while (true) {
    String inputText = reader.nextLine();

    if(inputText.equals("0")){
        break;
    }

    int read = Integer.parseInt(inputText);
    sum += read;

    System.out.println("Sum now: " + sum);

}

答案 3 :(得分:0)

每次拨打reader.nextLine()时,都会从扫描仪中读取一个新行,在检查零之前和将其添加到总和之前调用此函数。

最好不要只使用while(true)循环,而应使用类似while(read != 0)

的循环

最后,您应关闭扫描仪以防止损坏。在这个程序中它不会造成太大的伤害,但这并不意味着你可以忘记它。

import java.util.Scanner;

public class SumOfMultipleNumbers {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        int sum = 0;

        int read;

        do {
            sum += read;

            System.out.println("Sum now: " + sum);

            read = Integer.parseInt(reader.nextLine());
        } while (read != 0)

        System.out.println("Sum in the end: " + sum);

        reader.close();
    }
}