有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java扫描器示例循环

输入值直到输入0为止。然后程序结束,但在此之前,如果所有值都是整数,则会给出它们的和

这是我到目前为止尝试过的,但我被卡住了

public class Aufgabe2 {

    public static void main(String[] args) {
        /* TODO: add code here */
        int n;
        int sum = 0;
        boolean exit = true;

        Scanner input = new Scanner(System.in);



        while (true) {

            n = input.nextInt();

            if (n == 0) {
                exit = true;
            } else {
                sum += n;
                System.out.println(sum);

            }
        }
    }
}

共 (2) 个答案

  1. # 1 楼答案

    工作代码:

    import java.util.*;
    
    public class Aufgabe2 {
    
        public static void main(String[] args) {
            /* TODO: add code here */
            int n;
            int sum = 0;
            boolean exit = false;
            Scanner input = new Scanner(System.in);
            while (!exit) {
                System.out.println("Enter a number:");
                n = input.nextInt();
                if (n == 0) {
                    exit = true;
                } else {
                    sum += n;
                    System.out.println(sum);
                }
            }
        }
    }
    

    输出:

    Enter a number:
    1
    1
    Enter a number:
    3
    4
    Enter a number:
    6
    10
    Enter a number:
    0
    

    编辑:

    必须将while (true)循环更改为使用布尔变量exit。我相应地修改了代码,并更正了while循环条件

  2. # 2 楼答案

    甲骨文网站上有一些关于扫描仪的好文件:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

    如果您期望的令牌不存在,Scanner将抛出一个错误。我建议您在尝试解析前检查整数input.hasNextInt()

    比如:

    int sum = 0;
    boolean exit = true;
    
    Scanner input = new Scanner(System.in);
    
    while (input.hasNextInt()) {
    
      int n = input.nextInt();
    
      if (n == 0) {
        break;
      } else {
        sum += n;
      }
    }
    // Print outside of the loop
    System.out.println(sum);
    

    项目结果

    Input:
      1
      2
      3
      0
    Output:
      6