问题描述
我是一个学生,他们正在制作一个简单的评分系统,而我却在努力做到这一点
当我输入特定数字时,它会绕过我的else-if语句进入else 数字分别是98、67、98、80和81,我不知道为什么会发生这种情况
这是我的代码:
public static void main(String[]args) {
double grade=0,tgrade=0,r;
int gcount=0;
for (int i = 0; i<5;i++) {
grade = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter the grades "));
tgrade = tgrade+grade;
gcount++;
System.out.println(gcount+". "+"grade: "+grade );
}
DecimalFormat c = new DecimalFormat("##.##");
tgrade = tgrade/500*100;
r = new Double(c.format(tgrade)).doubleValue();
System.out.print("Total Grade: "+(tgrade)+"\n");
if (r >= 95 && r <=100) {
JOptionPane.showMessageDialog(null,"High Honor");
}else if (r >= 90 && r <= 94){
JOptionPane.showMessageDialog(null,"Honor");
}else if (r >=85 && r <= 89) {
JOptionPane.showMessageDialog(null,"Good");
}else if (r>=80 && r<=84) {
JOptionPane.showMessageDialog(null,"Satisfactory");
}else if (r>=75 && r<= 79) {
JOptionPane.showMessageDialog(null,"Low pass,but certifying");
}else {
JOptionPane.showMessageDialog(null,"Low Failure");
}
}
}
解决方法
您的变量r是double。
例如:
You have these numbers : 98,67,98,80 and 81
The average is : 424/5 = 84.8
此值84.8不能同时满足您所写的条件:
if (r >=85 && r <= 89)
if (r>=80 && r<=84)
因此它要熄灭。
您可以使用以下选项。
第一个选项:请勿使用以下范围:
if (r >= 95) {
JOptionPane.showMessageDialog(null,"High Honor");
}else if (r >= 90){
JOptionPane.showMessageDialog(null,"Honor");
}else if (r >= 85){
JOptionPane.showMessageDialog(null,"Good");
}else if (r >= 80){
JOptionPane.showMessageDialog(null,"Satisfactory");
}else if (r >= 75){
JOptionPane.showMessageDialog(null,"Low pass,but certifying");
}else {
JOptionPane.showMessageDialog(null,"Low Failure");
}
第二个选项:如果您使用范围,则将条件设置如下:
if (r >= 95 && r <= 100) {
JOptionPane.showMessageDialog(null,"High Honor");
}else if (r >= 90 && r < 95){
JOptionPane.showMessageDialog(null,"Honor");
}else if (r >= 85 && r < 90) {
JOptionPane.showMessageDialog(null,"Good");
}else if (r >= 80 && r < 85) {
JOptionPane.showMessageDialog(null,"Satisfactory");
}else if (r >= 75 && r < 80) {
JOptionPane.showMessageDialog(null,"Low Failure");
}
第三选项:如果需要取整,则可以使用Math.abs从double r
示例:
Math.abs(r)
,
将List<int>
更改为else if (r>=80 && r<=84)
,它将起作用