我正在尝试执行以下java分配,并且每件事似乎都能正常工作,除非我输入数字< 4或> 10时它会同时打印“无效等级!” “你没有输入任何数据!”我想要的只是打印“无效成绩!”我试图解决它,但我不能。有人能帮帮我吗?
谢谢,
分配: 创建一个程序,询问考试结果并计算成绩的平均值。成绩是4到10之间的浮点数。程序要求成绩,直到输入负数。如果用户提供的分数不是4到10之间的分数,则会在屏幕上显示“无效分数!”文本,程序会要求提供其他分数。最后,程序在屏幕上打印输入等级的数量和平均值,如示例打印所示。如果没有输入成绩,则通知“你没有输入任何成绩。”是屏幕上唯一印刷的内容。
提示:双重类型变量用于存储平均值。
程序被写入一个名为Average的类。
示例输出
程序计算输入成绩的平均值。 用负整数结束。
Input a grade (4-10): 5
Input a grade (4-10): 6,5
Input a grade (4-10): 7,5
Input a grade (4-10): 7
Input a grade (4-10): 0
Invalid grade!
Input a grade (4-10): -4
4 grades inputted.
Average of the grades: 6.5
代码
import java.util.Scanner;
public class apples {
public static void main(String[] args) {
int inputNumber=0;
int sum;
int count;
double average;
sum = 0;
count = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Program calculates the average of inputted grades.");
System.out.println("Finish with a negative integer.");
System.out.print("Input a grade (4-10): ");
inputNumber = reader.nextInt();
while (inputNumber > 0 && inputNumber>=4 && inputNumber<=10) {
sum += inputNumber;
count++;
System.out.print("Input a grade (4-10): ");
inputNumber = reader.nextInt();
}
if (inputNumber<4 || inputNumber>10) {
System.out.println("Invalid grade!");
}
if (count==0) {
System.out.print("You didn't enter any data!");
}
else {
average = ((double)sum) / count;
System.out.println();
System.out.println(count + " grades inputted.");
System.out.print("Average of the grades: "+ average);
}
}
}
答案 0 :(得分:3)
在第二个if之前放入一个else,所以只有在第一个不是的时候才会这样做:
if (inputNumber<4 || inputNumber>10) {
System.out.println("Invalid grade!");
} else if (count==0) {
System.out.print("You didn't enter any data!");
}
答案 1 :(得分:0)
当您以负整数结束时,inputNumber将始终小于4,因此
if (inputNumber<4 || inputNumber>10) {
System.out.println("Invalid grade!");
}
总是如此。
将其更改为以下(稍微容易阅读):
do {
System.out.print("Input a grade (4-10): ");
inputNumber = reader.nextInt();
if (inputNumber<4 || inputNumber>10) {
break ; //
}
sum += inputNumber;
count++;
}while (count <= 4) {
if (count==0) {
System.out.print("You didn't enter any data!");
}
答案 2 :(得分:0)
由于这是一项任务,我宁愿给你一个线索,而不是答案......
仔细查看你的while循环 - 它永远不会被输入。 这意味着当您输入时,count为0,例如,3。当它正在执行时,您满足两个条件,这意味着两行都在打印。您需要修改代码以确保满足(或达到)一个或另一个条件,但不能同时满足这两个条件。
答案 3 :(得分:0)
是的,if - else
会在这里提供帮助,但是你把它放在哪里也很重要。
while (inputNumber > 0) {
if (inputNumber<4 || inputNumber>10) {
System.out.println("Invalid grade!");
} else {
sum += inputNumber;
count++;
}
System.out.print("Input a grade (4-10): ");
inputNumber = reader.nextInt();
}
答案 4 :(得分:-1)
import java.util.Scanner;
public class Average {
public static void main(String[] args) {
int total = 0;
double number_sum = 0, number_entered = 0, avg = 0;
Scanner reader = new Scanner(System.in);
System.out
.print("Program calculates the average of inputted grades. \nFinish with a negative integer.\n\n");
do {
System.out.print("Input a grade (4-10): ");
number_entered = reader.nextDouble();
if (number_entered <= 10 && number_entered >= 4) {
number_sum = number_sum + number_entered;
total++;
}
if (number_entered == 0 || number_entered < 4
|| number_entered > 10) {
System.out.print("Invalid grade!");
System.out.print("\nInput a grade (4-10): ");
number_entered = reader.nextDouble();
}
if (number_entered < 0) {
if (total == 0) {
System.out.print("You did not input any grades.");
} else {
avg = number_sum / total;
System.out.print(total + " grades inputted.\n");
System.out.print("Average of the grades: " + avg);
}
}
} while (number_entered > 0);
}
}