2014-09-29 85 views
-1
int single = 0, doub=0, triple=0, homer=0, atbats=0, totalbase, totalhits; 
double slug, battingavg; 

Scanner sc = new Scanner(System.in); 
System.out.print("Enter singles (-1 to end): "); 
single = sc.nextInt(); 

while (single != -1) 
{ 
    System.out.print("Enter doubles: "); 
    doub = sc.nextInt(); 
    System.out.print("Enter triples: "); 
    triple = sc.nextInt(); 
    System.out.print("Enter home runs: "); 
    homer = sc.nextInt(); 
    System.out.print("Enter total at bats: "); 
    atbats = sc.nextInt(); 
    System.out.print("Enter the player's name: "); 
    String name = sc.next(); 
    totalbase = (single + doub * 2 + triple * 3 + homer * 4); 
    slug = totalbase/atbats; 
    battingavg = (single + doub + triple + homer)/atbats; 
    System.out.println("Player's name is " + name); 
    System.out.printf("The slugging percentage is %.3f\n", + slug); 
    System.out.printf("The batting percentage is %.3f\n", + battingavg); 

    System.out.print("Enter singles (-1 to end): "); 
    single = sc.nextInt(); 
} 

這個程序在計算後只會輸出1或者0。一切工作正常,但它似乎並沒有做計算。程序不會做計算

回答

3

問題是,當你做整數除法時,你會得到整數值。請使用doublefloat數據類型。我看到slugbattingavg已經是double s,但是您將整數除法的結果分配給它們。如果您至少將計算中的一個值投射到double,則應該得到您期望的輸出。例如:

slug = totalbase/(double) atbats; 
battingavg = (single + doub + triple + homer)/(double) atbats; 
+0

感謝您的幫助 – Bryan 2014-09-29 21:49:07

1

當劃分整數值,並將結果存儲在double即加寬轉換,但值計算爲一個整數,因此你加寬整數值。

改變這一狀況,

slug = totalbase/atbats; 
battingavg = (single + doub + triple + homer)/atbats; 

到這樣的事情,

slug = ((double) totalbase/atbats); 
battingavg = ((double) (single + doub + triple + homer)/atbats); 

得到double值到您的double變量。