Java 如何从一行中总结任意数量的用户输入数字

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22647352/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 17:04:28  来源:igfitidea点击:

How to sum any amount of user inputted numbers from a single line

javasumuser-input

提问by SamsinOzo

Trying to figure out how I would take any amount of inputted numbers from a user and add them together

试图弄清楚我将如何从用户那里获取任意数量的输入数字并将它们加在一起

Example user input: 1 2 3 4 Sum = 10

示例用户输入:1 2 3 4 Sum = 10

The user can put any amount of numbers in not a specified amount so if he wanted to add 1 2 3 4 5 6 7 8 9 10 11 12 13, it would sum them all up to 91

用户可以将任意数量的数字放入非指定数量中,因此如果他想添加 1 2 3 4 5 6 7 8 9 10 11 12 13,则将它们加起来为 91

Thanks for the help in advance.

我在这里先向您的帮助表示感谢。

import java.util.Scanner;

public class test
{
    public static final int SENTINEL = -1;
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int score = 0;
        int sum = 0;

        System.out.println("Enter numbers here");
        while (score >= 0) {
            if (score <= -1) {
            score = kb.nextInt();
            sum += score;
            score = 0;
        }
            System.out.println(sum);
    }
  }
}


Thanks to libik for all his time and help, here is the finished code.

感谢 libik 的所有时间和帮助,这里是完成的代码。

import java.util.Scanner;

public class JavaApplication1156 {

    public static void main(String[] args) {
    System.out.println("Enter numbers here");
    int sum;
    do {
        Scanner kb = new Scanner(System.in);
        int score = 0;
        sum = 0;
        String line = kb.nextLine();
        kb = new Scanner(line); //has to do this to make the kb.hasNexInt() work.
        while (kb.hasNextInt()) {
            score = kb.nextInt();
            sum += score;
        }
        if (sum <= -1)
        System.out.println("Application ended");
        else if (sum >= 0)
        System.out.println("Sum = " + sum);

    } while (sum != -1);
  }

}

采纳答案by libik

It is very easy actually

其实很容易

import java.util.Scanner;

public class JavaApplication115 {

    public static void main(String[] args) {
        System.out.println("write numbers, if you write zero, program ends");
        Scanner input = new Scanner(System.in); //just copy-and paste this line, you dont have to understand it yet.
        int number;
        int sum = 0;
        do {
            number = input.nextInt(); //this reads number from input and store its value in variable number
            sum+= number; //here you add number to the total sum
        } while(number != 0); //just repeat cycle as long as number is not zero

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

}


Working code based on your code :

基于您的代码的工作代码:

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

    System.out.println("Enter numbers here");
    String line = kb.nextLine();

    kb = new Scanner(line); //has to do this to make the kb.hasNexInt() work.
    while (kb.hasNextInt()) {
        score = kb.nextInt();
        sum += score;
    }
    System.out.println(sum);
}


Also if you are interested in "minimal" version, which is the same as the one before, but using as less code as possible, here it is :

此外,如果您对“最小”版本感兴趣,它与之前的版本相同,但使用尽可能少的代码,这里是:

public static void main(String[] args) {
    int sum = 0;
    System.out.println("Enter numbers here");
    Scanner kb = new Scanner((new Scanner(System.in)).nextLine()); //has to do this to make the kb.hasNexInt() work.
    while (kb.hasNextInt()) {
        sum += kb.nextInt();
    }
    System.out.println(sum);
}


Find sum of each line as long as sum is not zero (based on second block of code) :

只要总和不为零(基于第二个代码块),就可以找到每行的总和:

public static void main(String[] args) {
    System.out.println("Enter numbers here");
    int sum;
    do {
        Scanner kb = new Scanner(System.in);
        int score = 0;
        sum = 0;
        String line = kb.nextLine();
        kb = new Scanner(line); //has to do this to make the kb.hasNexInt() work.
        while (kb.hasNextInt()) {
            score = kb.nextInt();
            sum += score;
        }
        System.out.println("Sum = " + sum);
    } while (sum != 0);
}