2017-04-22 67 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;