2014-05-02 109 views
0

我写了一个简单的程序(请原谅我不使用try-catch来处理异常),以便将数字添加到列表中并查找它们的总和,平均值,最大值和最小值。我想包括一个代码来检查空白。我试图用hasNext()来做到这一点。但是,当我运行该程序并输入一些空白时,它不会按照我的意图告诉我“您没有输入数字”。目前,我阻止了hasNext()部分,所以程序的其余部分可以顺利运行。我是Java和编程的新手。我在这个论坛上检查过相关的帖子,似乎无法找到解决方案。用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)); 

     } 
    } 

回答

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!"); 
} 

把这段代码放到循环中。

+0

'BufferedReader'和'InputStreamReader'在'java.io'中定义。所以,请为这些提交'import'声明。 –

+0

部分工作!如果我现在运行程序并输入一个字母或空白作为第一个输入,它会抛出NoSuchElementException并终止。 ''do do System.out.println(“输入一个数字或0退出:”); \t \t \t尝试{ \t \t \t input = Double.parseDouble(br.readLine()); \t \t \t list.add(input); \t \t \t}赶上(NumberFormatException的| IOException异常NFE){ \t \t \t的System.out.println( “你没有输入一个数字!”); \t \t \t} \t \t} while(input!= 0.0); \t \t如果(则为list.size()== 1){ \t \t \t的System.out.println( “你没有输入任何数字”); '' – sedeh