【问题标题】:Scanner example loop扫描仪示例循环
【发布时间】:2016-01-26 18:42:21
【问题描述】:

输入值直到输入 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);

            }
        }
    }
}

【问题讨论】:

    标签: java loops methods integration java.util.scanner


    【解决方案1】:

    试试;

    int n;
    int sum = 0;
    boolean exit = true;
    
    Scanner input = new Scanner(System.in);
    
    while (exit) {
        n = input.nextInt();
    
        if (n == 0) {
            exit = false;
        }
        else {
            sum += n;
            System.out.println(sum);
        }
    }
    

    您有一个while(true),它是一个连续循环。

    【讨论】:

    • 它什么也没给...应该是这样吗?
    • 您必须提供输入,不是吗?您正在使用 Scanner 读取用户的输入。
    【解决方案2】:

    oracle 网站上的 Scanner 上有一些不错的 doco:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

    如果您期望的令牌不存在,扫描程序将引发错误。我建议您在尝试解析之前检查整数 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
    

    【讨论】:

    • 哎呀。错误地,我编辑了你的答案而不是我的。对不起。
    • 别担心,我已经修好了
    【解决方案3】:

    工作代码:

    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 循环条件。

    【讨论】:

    • 给他代码而不解释它为什么工作对他一点帮助都没有。
    • 完成。当我不了解网站的工作方式时,我早就回答了这个问题。但只要这个答案对 OP 有用,无论赞成还是反对,我都很高兴。
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多