这句话有什么问题?它总是输出0.0而不是总得分结果
import java.util.Scanner;
public class d {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1;
int num2;
int num3;
int percentnum1;
int percentnum2;
int percentnum3;
double totalscore;
System.out.print("Enter paper 1 score (out of 90): ");
num1 = input.nextInt();
System.out.print("Enter paper 2 score (out of 90): ");
num2 = input.nextInt();
System.out.print("Enter IA score (out of 20): ");
num3 = input.nextInt();
percentnum1 = (num1 / 90) * 100;
percentnum2 = (num2 / 90) * 100;
percentnum3 = (num3 / 20) * 80;
totalscore = (percentnum1 * 0.4) + (percentnum2 * 0.4) + (percentnum3 * 0.2);
System.out.println("The total score is " + totalscore);
}
}
答案 0 :(得分:0)
似乎下面的代码导致了问题:
percentnum1 = (num1 / 90) * 100;
percentnum2 = (num2 / 90) * 100;
percentnum3 = (num3 / 20) * 80;
如果num1
的{strong>全部,num2
和num3
的值小于其分母,则结果(totalscore
)将为{{1因为整数除法,即使某些变量是0.0
或90/90
而其他变量小于它的分母,你会再次得到错误的结果,并且由于整数除法(虽然这次不一定是20/20
)。
解决方案是简单地使用0.0
类型来保持精确度。
double
答案 1 :(得分:0)
将int
更改为double
to avoid rounding down to 0。
答案 2 :(得分:0)
如果您想使用import java.util.logging.*;
类型,可以先将数字相乘。希望它有所帮助。
int