2016-01-27 42 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 –

相关问题