不能为我的生活弄清楚为什么我的平均值没有正确显示我已经看了2个小时。
import java.util.Scanner;
public class midterm
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
int examScore =0;
int averageExamScore = 0;
int numStudent=0;
int sum=0;
while(examScore >= 0)
{
System.out.println("Enter exam scores (enter negative number to quit): ");
examScore = keyboard.nextInt();
numStudent++;
sum = sum + examScore;
}
if(numStudent > 0)
{
averageExamScore = sum/numStudent;
}
else
{
System.out.println("No scores to average");
}
}
}
答案 0 :(得分:2)
这里的问题是整数除法。
averageExamScore = sum/numStudent;
这三个参数都是整数,这意味着:
如果你将商的一部分投射到double
,你就会失去精确度(并且编译失败)
示例:
averageExamScore = (double)sum/numStudent; // wouldn't compile
提供商sum/numStudent
的楼层而不是整数(因此对于像4.9
这样的数字,你得到4
)。
您可以通过以下几种方式解决此问题:
averageExamScore
声明为double
。这是必需的。sum
或numStudent
投射到double
,或将其类型更改为double
。答案 1 :(得分:1)
您已将averageExamScore
定义为整数,因此将应用整数运算。
e.g。
5 / 2 == 2
1 / 2 == 0
将averageExamScore
变为双精度,并将其他整数投射为双精度。
修改强>
打印出来
DO
if(numStudent > 0)
{
averageExamScore = sum/numStudent;
System.out.println ("average score is " + averageExamScore );
}
答案 2 :(得分:0)
完成以下代码,
public class MidTerm {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int examScore = 0;
double averageExamScore = 0;
int numStudent = 0;
int sum = 0;
while (true) {
System.out.print("Enter exam scores (enter negative number to quit): ");
examScore = keyboard.nextInt();
if (examScore >= 0) {
numStudent++;
sum += examScore;
} else break;
}
if (numStudent > 0) {
averageExamScore = sum / numStudent;
System.out.println("Avarage score is : " + averageExamScore);
} else System.out.println("No scores to average");
}
}
祝你好运!!!