2017-04-22 72 views
1

此报价有何错误?它总是输出0.0,而不是总比分结果无论num1,num2或num3输入的总分总是等于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

javascript!== java –

+0

欢迎来到SO。将'numX'和'percentnumX'改为double以避免四舍五入为0 – c0der

+0

[Java中的整数除法]的可能重复(http://stackoverflow.com/questions/7220681/division-of-integers-in-java ) –

回答

0

好像下面的代码引起的问题:如果num1num2num3所有都值低于其分母

percentnum1 = (num1/90) * 100; 
percentnum2 = (num2/90) * 100; 
percentnum3 = (num3/20) * 80; 

结果(totalscore)将为0.0,因为整数除法,即使某些变量是90/9020/20而其他变量小于分母,您w应该再次得到不正确的结果,并再次由于整数除法(虽然这次不一定是0.0)。

解决方法是简单地使用double类型来保持精度。

double num1; 
double num2; 
double num3 
double percentnum1; 
double percentnum2; 
double percentnum3; 
double totalscore; 
0

如果您喜欢使用int类型,则可以先将数字相乘。希望它有帮助。

percentnum1 = num1 * 100/90; 
percentnum2 = num2 * 90/100; 
percentnum3 = num3 * 80/20;