脚本的主要目的是不断询问成绩,直到用户输入负数为止。一旦输入了负数,它就会计算出这些等级的平均值。用户输入的等级只能是4-10。
我已经想了好几个小时了.如果我只输入无效的输入或只输入有效的输入,它就可以正常工作,但是第二次我尝试混合脚本停止。
例如:如果输入4(有效输入),脚本将请求另一个级别。如果我输入3(无效输入),脚本说明输入无效,并请求另一个有效输入。在那之后,如果我再次输入4,它就停止工作,当它应该一直这样运行,直到我输入一个负数,使它开始计算有效输入的平均值。
import java.util.Scanner;
public class Average {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("The program will calculate the average of the user inputted grades.");
System.out.println("The program will start calculating with any negative integer");
double grade;
double sum = 0;
int count = 0;
do {
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();
if (grade >= 4 && grade <= 10){
sum = sum + grade;
count++;
}
} while (grade >= 4 && grade <= 10);
{
while (grade >= 0 && grade < 4 || grade > 10){
System.out.println("Invalid grade!");
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();
if (grade < 0){
System.out.println(count + " grades were given.");
System.out.println("Average: " + sum/count);
break;
}
}
}
}
发布于 2015-05-11 18:08:12
它不能工作,因为循环是分开的,所以如果第一个是假的,第二个只能工作一次,然后停止。试着做这样的事情:
import java.util.Scanner;
public class Average {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("The program will calculate the average of the user inputted grades.");
System.out.println("The program will start calculating with any negative integer");
double sum = 0;
int count = 0;
double grade;
do{
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();
if(grade >= 4 && grade <= 10){
sum = sum + grade;
count++;
}else{
System.out.println("Invalid grade!");
}
}while(grade >= 0);
System.out.println(count + " grades were given.");
System.out.println("Average: " + sum/count);
}
}
发布于 2015-05-11 18:11:13
第一个while循环只用于有效输入,第二个循环仅用于无效输入,换句话说,如果您在put 3和5中,它已经退出了这两个循环。
尝尝这个
while(true) {
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();
if(grade < 0){
System.out.println(count + " grades were given.");
System.out.println("Average: " + sum / count);
break;
}
if(grade >= 4 && grade <= 10){
sum = sum + grade;
count++;
} else {
System.out.println("Invalid grade!");
}
}
发布于 2015-05-11 18:11:17
尽量避免嵌入的时间/做时间-因为你正在经历它们是很难读,所以它可能是很难弄清楚是怎么回事。使用一个while循环可以更容易地实现您想要实现的目标:
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();
while (grade >= 0)
{
if (grade < 4 || grade > 10)
{
System.out.println("Invalid grade!");
}
else
{
sum = sum + grade;
count++;
}
System.out.print("Input grade (4-10): ");
grade = scanner.nextDouble();
}
https://stackoverflow.com/questions/30174167
复制相似问题