我写了一个简单的程序(原谅我没有使用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));
}
}
答案 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!" );
}
将此代码放入循环中。