Java 显示来自while循环的用户输入

Java 显示来自while循环的用户输入,java,while-loop,Java,While Loop,我需要编写一个程序,提示用户输入哨兵值为-1的正整数。程序需要在单行上显示输入的整数(不包括-1),然后显示输入整数的总和。我已经做了一些搜索,看起来我需要创建一个列表来存储我想的数字?我还是个新手,不知道该怎么做。我试着用谷歌搜索,但这让我感到困惑。以下是我目前的代码: import java.util.Scanner; public class InputSum { public static void main(String[] args) { Scanner s

我需要编写一个程序,提示用户输入哨兵值为-1的正整数。程序需要在单行上显示输入的整数(不包括-1),然后显示输入整数的总和。我已经做了一些搜索,看起来我需要创建一个列表来存储我想的数字?我还是个新手,不知道该怎么做。我试着用谷歌搜索,但这让我感到困惑。以下是我目前的代码:

import java.util.Scanner;

public class InputSum {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter positive integers. Enter -1 to stop. ");
        int number = scan.nextInt();
        int sum = 0;
        while (number != -1) {
            if (number < -1) {
                System.out.println("Invalid input. Try again.");
            } else
                sum += number;
            number = scan.nextInt();
        }
        System.out.println("The sum: " + sum + ".");
    }
}
import java.util.Scanner;
公共类输入和{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入正整数,输入-1停止”);
int number=scan.nextInt();
整数和=0;
while(数字!=-1){
如果(数字<-1){
System.out.println(“输入无效。请重试”);
}否则
总和+=数字;
number=scan.nextInt();
}
System.out.println(“总和:+sum+”);
}
}

顺便说一下,这是我第一次提交,如果我做错了什么,我很抱歉

您可以通过以下语句来实现:

import java.util.Scanner;

public class InputSum {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter positive integers. Enter -1 to stop. ");
        int number = 0;
        int sum = 0;
        StringBuilder sb = new StringBuilder();
        do{
            try {
                number = scan.nextInt();

                if(number < -1){
                    System.out.println("Invalid input. Try again.");
                }else if(number > -1){
                    sum += number;
                    sb.append(number + " ");
                }

            } catch (InputMismatchException e) { // handle invalid integers
                System.out.println("Invalid input. Try again.");
            }
        }while (number != -1);

        System.out.println("Numbers entered: " + sb.toString().trim() + ".");
        System.out.println("The sum: " + sum + ".");
    }
}
import java.util.Scanner;
公共类输入和{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入正整数,输入-1停止”);
整数=0;
整数和=0;
StringBuilder sb=新的StringBuilder();
做{
试一试{
number=scan.nextInt();
如果(数字<-1){
System.out.println(“输入无效。请重试”);
}否则如果(编号>-1){
总和+=数字;
某人附加(数字+“”);
}
}catch(InputMismatchException e){//处理无效整数
System.out.println(“输入无效。请重试”);
}
}while(number!=-1);
System.out.println(“输入的数字:“+sb.toString().trim()+”);
System.out.println(“总和:+sum+”);
}
}
这将迭代,直到用户输入-1。最后,它将显示正整数和输入的数字之和。我用a来累加数字。你也可以像你所说的那样使用一个列表,但我觉得这样更容易

编辑

下面是不使用try-catch块的另一种方法:

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter positive integers. Enter -1 to stop. ");
        int number = 0;
        int sum = 0;
        StringBuilder sb = new StringBuilder();
        do{
            if(scan.hasNextInt()){
                number = scan.nextInt();

                if(number < -1){
                    System.out.println("Invalid input. Try again.");
                }else if(number > -1){
                    sum += number;
                    sb.append(number + ", ");
                }
            }else{
                System.out.println("Invalid input. Try again.");
                scan.next(); // reset the scanner
            }
        }while (number != -1);

        System.out.println("Numbers entered: " + sb.delete(sb.length() - 2, sb.length()) + ".");
        System.out.println("The sum: " + sum + ".");
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入正整数,输入-1停止”);
整数=0;
整数和=0;
StringBuilder sb=新的StringBuilder();
做{
if(scan.hasNextInt()){
number=scan.nextInt();
如果(数字<-1){
System.out.println(“输入无效。请重试”);
}否则如果(编号>-1){
总和+=数字;
sb.附加(数字+“,”);
}
}否则{
System.out.println(“输入无效。请重试”);
scan.next();//重置扫描仪
}
}while(number!=-1);
System.out.println(“输入的数字:“+sb.delete(sb.length()-2,sb.length())+”);
System.out.println(“总和:+sum+”);
}

正如在这次的评论中提到的,我在读取输入之前使用它来验证输入是否是有效的整数。这是为了防止在用户输入无效整数时引发异常。我还用逗号分隔了数字。

您可以使用StringBuilder来存储数字

import java.util.Scanner;

public class InputSum {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter positive integers. Enter -1 to stop. ");
    int number = scan.nextInt();
    int sum = 0;
    StringBuilder sb = new StringBuilder();
    while (number != -1) {
        if (number < -1) {
            System.out.println("Invalid input. Try again.");
        } else
            sum += number;
        number = scan.nextInt();
        sb.append(number + " +  ");
    }
    System.out.println("The sum: " + sum + ".");
}
import java.util.Scanner;
公共类输入和{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入正整数,输入-1停止”);
int number=scan.nextInt();
整数和=0;
StringBuilder sb=新的StringBuilder();
while(数字!=-1){
如果(数字<-1){
System.out.println(“输入无效。请重试”);
}否则
总和+=数字;
number=scan.nextInt();
sb.追加(数字+“+”);
}
System.out.println(“总和:+sum+”);
}

}

以下是有关收藏的教程:。但是你不需要一个整数列表就可以做到这一点。您只需创建一个字符串并将读取的数字连接到该字符串,然后在输入最后一个数字后打印该字符串。将数字放入ArrayList或类似容器中,然后在最后重复这些数字。老兄,这些东西现在让我很困惑。@Richard问这样一个广泛的问题的问题是有一百万种方法可以做到这一点,每种方法都有自己的优点/问题。你具体问的是哪一部分?我明白了,很抱歉。这是一个编程类。下面是作业的措辞:“设计并实现一个Java程序(命名为InputSum),提示用户输入正整数。该程序应接受整数,直到用户输入值-1(负数)。用户输入-1后,程序应显示输入的数字,然后显示其和。”如果使用字符串生成器,是否必须使用try-catch部分?我们还没有在课堂上讨论过这个问题,所以我不确定他是否会接受它。@Richard try-catch块它只是为了防止在用户输入无效整数(如4.65、10、2o)时出现不良结果。在这些情况下,scanner类中的方法抛出一个
inputmaschException
。try-catch块的另一种替代方法是在使用
nextInt
method@Richard它用于处理用户的错误输入。真的,你的第一个例子应该使用它,但如果他们还没有教它,我就不讲了。如果用户