Java 没有获得期望的输出
基本上,我要求用户输入两个考试分数(双倍)。如果两次考试的平均成绩超过90分,则屏幕上会输出一条消息,表示他们得了a,其他平均成绩依次类推 无论我输入什么组合,它总是输出用户已获得“C”等级,即使他们没有 这里的问题是什么 没有编译器错误Java 没有获得期望的输出,java,Java,基本上,我要求用户输入两个考试分数(双倍)。如果两次考试的平均成绩超过90分,则屏幕上会输出一条消息,表示他们得了a,其他平均成绩依次类推 无论我输入什么组合,它总是输出用户已获得“C”等级,即使他们没有 这里的问题是什么 没有编译器错误 package test; import java.util.Scanner; class test3 { public static void main(String args[]) { Scanner zino = new Scanner(Sys
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,则输出应为:
一百
你得了A
这就是我得到的:
0.0
你得了C。你的问题是,在你读取两个分数的值之前,你在计算平均值
average = (score1 + score2) / 2 ;
当您运行此行时,score1
和score2
都是零,因此您将average
设置为(0+0)/2
,当然是零
在以后的程序中,您有
score1 = zino.nextDouble();
...
score2 = zino.nextDouble();
将score1
和score2
设置为用户输入的值。但是你再也不会计算平均值,所以它保持在零
您需要做的是移动行average=(score1+score2)/2代码>向下,以便在设置score1
和score2
的两行之后运行,将代码平均值=(score1+score3)/2;获取完用户输入后
您的代码应该如下所示:
System.out.println("Enter score 1 ");
score1 = zino.nextDouble();
System.out.println("Enter score 2 ");
score2 = zino.nextDouble();
average=(score1+score 3)/2;
您从不修改平均值
变量,因此它始终为零。(你说它等于score1+score2
(两者都初始化为零)除以2average=(score1+score2)/2;
等于average=(0+0)/2
…也许你应该在计算平均值之前提示用户分数这行的average=(score1+score2)/2;
place就在if语句之前。我建议您学习使用调试器逐步检查代码以了解发生了什么。这将对您的编程生涯非常有帮助,并在if语句之前为您节省大量时间和精力。明白了:)