与扫描仪混淆(Big Java Ex 6.3)

时间:2016-07-27 23:19:28

标签: java

目前正在阅读我书中的第6章。我们介绍循环和while循环的地方。

好吧所以基本上他们的程序示例让我让用户输入任意数量的数字,直到用户输入Q.一旦用户输入Q,我需要获得最大数量和平均值。

我不会把实际进行计算的方法放在一起,因为我把它们命名得很漂亮,但主要是我的困惑所在。

顺便说一下Heres一个简单的输入输出

输入

10
0
-1
Q

输出

Average = 3.0
Max = 10.0

我的代码

public class DataSet{
    public static void main(String [] args)
    {
        DataAnalyze data = new DataAnalyze();
        Scanner input = new Scanner(System.in);
        Scanner inputTwo = new Scanner(System.in);
        boolean done = false;
        while(!done)
        {

            String result = input.next();
            if (result.equalsIgnoreCase("Q"))
            {
                done = true;
            }
            else {
                double x = inputTwo.nextDouble();
                data.add(x);
            }
        }
        System.out.println("Average = " + data.getAverage());
        System.out.println("Max num = " + data.getMaximum());
    }

}

我在double x = inputTwo.nextDouble();收到错误。

继承我的思考过程。

让我们一个标志并继续循环询问用户输入一个数字,直到我们点击Q。现在我的问题是,当然数字需要是一个双倍而Q将是一个字符串。所以我的尝试是制作两个扫描仪

根据我的书中的第二章,了解我对扫描仪的理解。

import Scanner来自java.util library所以我们可以使用此套餐。之后我们必须创建scanner对象。说Scanner input = new Scanner(System.in);。现在唯一要做的就是让用户输入输入,这样我们就可以通过将其设置为另一个变量(即input)来实现。这很好的原因是它允许我们将扫描仪设置为doublesints等,当它作为默认string时(通过.nextDouble(), .nextInt());

因为我将结果设置为string,,我的印象是我无法使用相同的Scanner对象来获取double,所以我创建了另一个Scanner名为inputTwo的对象,如果用户没有放置Q(即放置数字),它将获得这些值。

我该如何处理?我觉得我并没有想到一些非常简单和容易的事情。

1 个答案:

答案 0 :(得分:1)

您在这里是正确的道路,但是您不需要两个扫描仪来处理输入。如果结果是数字,请使用double x = Double.parseDouble(result)将其强制转换为double,并将所有第二个扫描程序一起删除。祝你好运!