基本上,我已要求用户输入两个考试成绩(双打)。如果两个考试的平均分数均超过90,则屏幕上会显示一条消息,提示他们获得了A,以此类推。
无论我输入什么组合,它总是输出用户获得了'C'成绩,即使他们没有获得。
这是什么问题?
没有编译器错误。
package test;
import java.util.Scanner;
class test3 {
public static void main(String args[]) {
Scanner zino = new Scanner(System.in);
double score1 = 0;
double score2 = 0;
double average = 0;
average = (score1 + score2) / 2 ;
System.out.println("Enter score 1 ");
score1 = zino.nextDouble();
System.out.println("Enter score 2 ");
score2 = zino.nextDouble();
if(average > 90)
{
System.out.println(average);
System.out.println("You got an A!");
}
else if(average > 80)
{
System.out.println(average);
System.out.println("You got a B.");
}
else
{
System.out.println(average);
System.out.println("You got a C.");
}`
}
}
如果用户输入的两个分数均为100,则输出应为:
100 您得到了A!
这就是我得到的:
0.0 你有C。
答案 0 :(得分:0)
将代码平均设置为(score1 + score 3)/ 2;在获得用户输入后。
您的代码应如下所示:
System.out.println("Enter score 1 ");
score1 = zino.nextDouble();
System.out.println("Enter score 2 ");
score2 = zino.nextDouble();
average=(score1+score 3)/2;
答案 1 :(得分:-1)
您的问题是,您正在计算之前的平均值,您正在读取两个分数的值。
average = (score1 + score2) / 2 ;
运行此行时,score1
和score2
都为零,因此将average
设置为( 0 + 0 ) / 2
,当然也为零。
以后在您的程序中,您拥有
score1 = zino.nextDouble();
...
score2 = zino.nextDouble();
将score1
和score2
设置为用户输入的值。但是您再也不会计算average
了-因此它保持为零。
您需要做的是将average = (score1 + score2) / 2;
行向下移动 ,以便它在设置score1
和{的两行之后 之后运行{1}}。