我正在尝试创建一个Java程序,允许用户输入任意数量的数字等级,然后计算MIN
,MAX
& Average
。处理输入错误是让我感到困惑的地方。
我提出了两种不同的方法,第一种允许用户输入他们想要的等级数,直到用户输入标记-1
。第二种方法提示用户事先输入等级数。
// APPROACH ONE:
double grade = 0;
while (grade != -1) {
grade = input.nextDouble();
}
// APPROACH TWO:
System.out.println("Enter number of grades: ");
double num = input.nextDouble();
for (int i = 1, i <= num, i++) {
System.out.println("Enter grade: ");
double grade = input.nextDouble();
}
当输入参数外的字母时,我需要将消息合并到警告用户 - 字母,单词等。当我尝试实现这些错误处理循环时,我无法弄清楚如何让循环忽略错误的响应。
例如,在我的方法二中,如果用户输入3个成绩,然后输入89.5
,93.4
,-1
,我的程序就会结束,因为它认为{{1这是3个等级中的一部分。
我无法弄清楚如何让它识别-1,显示错误,然后再提示再输入3个。也许方法一会更容易,因为没有预定的等级数量。
答案 0 :(得分:0)
为了解决这个问题,我通常使用while循环,它看起来像这样:
double num = input.nextDouble();
for (int i = 1, i <= num, i++) {
System.out.println("Enter grade: ");
double grade = input.nextDouble();
while(grade < 0.0 || grade > 100.0) {
System.out.println("Invalid imput. Please reenter grade number " + n);
grade = input.nextDouble();
}
}
这将使用户进入一个他们无法离开的循环,直到他们输入0到100之间的数字,并且for循环中的n值在他们输入有效数字之前不会更新。
答案 1 :(得分:0)
要向用户发出警告消息,您可能希望尝试使用try/catch
语句(异常处理),并将booleans作为while循环的控件。同时看到你的代码要求用户输入几个数字我假设你需要使用某种array/arraylist
来帮助计算最小值/最大值/平均值。因此,您的代码可能会是这样的:
public static ArrayList<Double> getdouble(ArrayList<Double> a){
boolean control = true;
boolean control2 = true;
double grade = 0;
while (control == true){
while (control2 == true){
System.out.println("enter grade or -1 to end");
Scanner input = new Scanner(System.in);
try {
grade = input.nextDouble();
if (grade == -1){
control2 = false;
break;
}
a.add(grade);
} catch (Exception e){
System.out.println("error");
control2 = false;
}
} // end control2
System.out.println("input Y to continue adding grades or any other button to exit");
Scanner input2 = new Scanner (System.in);
if (input2.nextLine().toUpperCase().equals("Y")){
control2 = true;
} else {
control = false;
}
} //end control
return a;
}
public static void main(String [] args){
ArrayList<Double> x = new ArrayList<Double>();
getdouble(x);
System.out.println(x);
}