使用Java Scanner检查空白

时间:2014-05-02 04:01:14

标签: java java.util.scanner

我写了一个简单的程序(原谅我没有使用try-catch作为例外)将数字添加到列表中并找到它们的总和,平均值,最大值和最小值。我想包含一个代码来检查空白。我尝试用hasNext()来做到这一点。但是,当我运行程序并输入一些空白时,它并没有告诉我“你没有按照我的意图输入数字”。目前,我阻止了hasNext()部分,以便程序的其余部分可以顺利运行。我是Java和编程的新手。我已经在这个论坛上检查了相关帖子,似乎无法找到解决方案。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class BigAndSmall {
    public static void main(String[] args) {
        ArrayList<Double> list = new ArrayList<>();

        Scanner sc = new Scanner(System.in);

        double input = 0;
        double max = 0;
        double min = 0;
        double sum = 0;

        do{ 
            System.out.println("Enter a number or 0 to quit: ");
            input = sc.nextDouble();
            list.add(input);

        /*  if (!sc.hasNextDouble()) {
                System.out.println("You did not enter a number");
            }
            */
        }while(input != 0.0);       

        if (input == 0.0) {
            for (int i = 0; i < list.size(); i++) {
                sum = sum + list.get(i);                
            }
        }

            double avg = sum/list.size();
            System.out.println("Sum: " + sum);
            Collections.sort(list);                  
            System.out.println("Largest: " + Collections.max(list));
            System.out.println("Average: " + avg);
            System.out.println("Smallest: " + list.get(0));

        }
    }

1 个答案:

答案 0 :(得分:0)

尝试使用BufferedReader作为输入。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
double d;
try {
    d = Double.parseDouble( br.readLine() );
    list.add( d );
} catch( NumberFormatException nfe ) {
    System.out.println( "You did not enter a number!" );
}

将此代码放入循环中。