2016-01-27 78 views
2

不知何故,輸出結果完全錯誤。有任何解決這個問題的方法嗎?我怎樣才能將米轉換爲英里,並用英尺和英寸來表示餘數?

import java.util.Scanner; 

public class MeterConversion { 

    public static void main(String[] args) { 


     int meters; 
     System.out.print("Enter meters: "); 
     Scanner userInput = new Scanner (System.in); 
     meters = userInput.nextInt(); 

     double inches = (3.3 * 12 * meters); 
     int feet = (int) (inches/12); 
     int miles = (feet/5280); 
     int milesConversion = (miles - (meters % miles)); 
     int feetConversion = ((miles - milesConversion) % feet); 
     int inchesConversion = (int) (feetConversion % inches); 

     System.out.print(meters + " meter(s) converts to " 
     + milesConversion +" mile(s), " + feetConversion + " feet, " 
     + inchesConversion + " inch(es)"); 

    } 

} 
+1

仰望int劃分。 –

+0

請包括一個例子(你的輸入和輸出) – Spencer4134

+0

@HovercraftFullOfEels不是int division其實就是這裏的要點,OP想要轉換爲全部英里,其餘部分以英尺和英寸爲單位?我認爲使用int分解從英尺到整英里是合適的。我懷疑問題是進一步下降,用'*轉換'變量,並試圖找出剩下的腳。 –

回答

1

試試這個:

import java.util.Scanner; 

public class MeterConversion { 

    public static void main(String[] args) { 

     int meters; 
     System.out.print("Enter meters: "); 
     Scanner userInput = new Scanner (System.in); 
     meters = userInput.nextInt(); 

     double inches = (39.370078 * meters); 
     int miles = (int) (inches/63360); 
     int feet = (int) (inches - miles * 63360)/12; 
     double inchesRemaining = inches - (miles*63360 + feet*12); 

     System.out.print(meters + " meter(s) converts to " 
     + miles +" mile(s), " + feet + " feet, " 
     + inchesRemaining + " inch(es)"); 
    } 
} 

我之所以如此,這樣更容易從一個單位到另一個換算的理解。希望能幫助到你。

+0

完美,非常感謝!我的印象是模數運算是這個關鍵,但它比我更簡單。 ^。^ –

+0

@CrystalData若要了解更多關於使用float/double檢查模式[這裏](http://stackoverflow.com/questions/2947044/how-do-i-use-modulus-for-float-double )。一點Google搜索也會幫助你很多。 –

+2

我不明白爲什麼任何人都會低估這一點,這正是我尋找的答案。 :l但無論如何,感謝您的幫助!現在它在淨零,大聲笑。 :P –

相關問題