Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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,我需要用户输入一些数字,程序将它们相加,直到最后一个比前一个小。大概是这样的: Next:1 Next:3 Next:6 Next:1 Result:10 到目前为止,我只做了两个数的和,但没有和其余的数求和 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int number, number2, result; result = 0; System.

我需要用户输入一些数字,程序将它们相加,直到最后一个比前一个小。大概是这样的:

Next:1
Next:3
Next:6
Next:1
Result:10
到目前为止,我只做了两个数的和,但没有和其余的数求和

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int number, number2, result;
    result = 0;
    System.out.print("Next: ");
    number2 = scan.nextInt();
    while ((number=scan.nextInt()) > number2){
        result = number + number2;
        number2 = number;
    }
    System.out.println(result);
}

您可以使用
result+=number
。这会将
编号
添加到
结果


请注意,
number=scan.nextInt()
是条件表达式中的赋值。不是每个人都喜欢。事实上,您的代码中有一个bug(第一个数字不包括在总和中),因此您无论如何都需要重构:使用
int result=number2=scan.nextInt()初始化
是一种方式。

您可以使用
result+=number
。这会将
编号
添加到
结果

请注意,
number=scan.nextInt()
是条件表达式中的赋值。不是每个人都喜欢。事实上,您的代码中有一个bug(第一个数字不包括在总和中),因此您无论如何都需要重构:使用
int result=number2=scan.nextInt()初始化是一种方式。

那么:

number2 = 0;
number = scan.nextInt();
while (number > number2) {
    result += number;
    number2 = number;
    number = scan.nextInt();
}
那么:

number2 = 0;
number = scan.nextInt();
while (number > number2) {
    result += number;
    number2 = number;
    number = scan.nextInt();
}

在这一行中,您不断覆盖以前的结果:

result = number + number2;
尝试将其更改为:

result += number;
在while循环之前还添加以下分配:

result = number2;

在这一行中,您不断覆盖以前的结果:

result = number + number2;
尝试将其更改为:

result += number;
在while循环之前还添加以下分配:

result = number2;
工作代码:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int number, number2, result;
    number2 = scan.nextInt();
    result = number2;
    while ((number=scan.nextInt())>number2){
        result += number;
        number2=number;
    }
    System.out.println(result);
    scan.close();
}
工作代码:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int number, number2, result;
    number2 = scan.nextInt();
    result = number2;
    while ((number=scan.nextInt())>number2){
        result += number;
        number2=number;
    }
    System.out.println(result);
    scan.close();
}

您可以使用
+=
使事情变得更简单。另外,给变量起更好的名字

//store last input, current input, and the sum
int last = 0;
int result = 0;
int input = 0;
//note that if you enter invalid input, this will go into an infinite loop
while ((input = scan.nextInt()) > last){
    result += input; //directly adds the input to the sum
    last = input;
}
System.out.println("Sum: " + result);
为了防止无限循环,您应该使用
try
-
catch
块来检测无效输入,并使用
scan.next()
来清除无效数据,如下所示:

while (input > last){
    try{
        input = scan.nextInt();
        result += input;
        last = input;
    }catch (InputMismatchException e){
        System.err.println("Invalid input"); //you could also use .out
        scan.next(); //eliminate invalid data
    }
}

您可以使用
+=
使事情变得更简单。另外,给变量起更好的名字

//store last input, current input, and the sum
int last = 0;
int result = 0;
int input = 0;
//note that if you enter invalid input, this will go into an infinite loop
while ((input = scan.nextInt()) > last){
    result += input; //directly adds the input to the sum
    last = input;
}
System.out.println("Sum: " + result);
为了防止无限循环,您应该使用
try
-
catch
块来检测无效输入,并使用
scan.next()
来清除无效数据,如下所示:

while (input > last){
    try{
        input = scan.nextInt();
        result += input;
        last = input;
    }catch (InputMismatchException e){
        System.err.println("Invalid input"); //you could also use .out
        scan.next(); //eliminate invalid data
    }
}

每次删除结果时,请尝试此操作

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int number, number2, result;
    System.out.print("Next: ");
    result = scan.nextInt();
    number = result;
    while ((number2=scan.nextInt()) > number){
        result += number2;
        number = number2;
    }
    System.out.println(result);
}

每次删除结果时,请尝试此操作

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int number, number2, result;
    System.out.print("Next: ");
    result = scan.nextInt();
    number = result;
    while ((number2=scan.nextInt()) > number){
        result += number2;
        number = number2;
    }
    System.out.println(result);
}
也许

System.out.println( "Enter a number: " )
number = scan.nextInt();
result = number;
do {
    System.out.println( "Enter a number: " )
    number2 = scan.nextInt();
    result += number2;
    number = number2;
} while ( number2 >= number );
也许

System.out.println( "Enter a number: " )
number = scan.nextInt();
result = number;
do {
    System.out.println( "Enter a number: " )
    number2 = scan.nextInt();
    result += number2;
    number = number2;
} while ( number2 >= number );

上面的循环:结果+=number2;内部循环:结果+=编号;上面的循环:结果+=number2;内部循环:结果+=编号;您将错过提供的初始号码您将错过提供的初始号码您将错过提供的初始号码您将错过提供的初始号码非常感谢,这解决了我的问题+试水奖励:)非常感谢,这解决了我的问题+试水奖励:)