Java中的权重转换

Java中的权重转换,java,jgrasp,Java,Jgrasp,我应该编写一个程序,它将执行以下操作: 体重爱好者希望有一个程序,允许用户输入以盎司为单位的值,然后显示吨、磅和盎司的组合,每个值按吨、磅和盎司的顺序最大化。输入值不得超过5亿盎司(500000000) 输出内容应如下所示: 以盎司为单位输入重量:123456789 吨、磅和盎司的组合数量: 吨:3858 磅:49 盎司:5 123456789盎司=3858吨+49磅+5盎司 除了盎司,我什么都有。我不确定这些公式设置是否正确,或者是否有更好的方法。非常感谢您的帮助 import java

我应该编写一个程序,它将执行以下操作:

体重爱好者希望有一个程序,允许用户输入以盎司为单位的值,然后显示吨、磅和盎司的组合,每个值按吨、磅和盎司的顺序最大化。输入值不得超过5亿盎司(500000000)

输出内容应如下所示:

以盎司为单位输入重量:123456789

吨、磅和盎司的组合数量: 吨:3858 磅:49 盎司:5 123456789盎司=3858吨+49磅+5盎司

除了盎司,我什么都有。我不确定这些公式设置是否正确,或者是否有更好的方法。非常感谢您的帮助

   import java.util.Scanner;

   public class WeightConversion
    {
      public static void main (String[] args)
      { 
         Scanner userInput = new Scanner(System.in);

     int weightInOunces = 0;
     int tons = 0;
     int pounds = 0;
     int ounces = 0;

     System.out.print("Enter weight in ounces: ");
     weightInOunces = userInput.nextInt();

     if (weightInOunces > 500000000)
      {  System.out.print("Limit of 500,000,000 ounces exceeded!"); 

      }

     else
     {System.out.println ("Combined Number of Tons, Pounds, Ounces: "
        + "\n\tTons: " + weightInOunces / 32000);
      tons = weightInOunces / 32000;
      System.out.println ("\tPounds: " + (weightInOunces - (tons * 32000)) / 16); 
      pounds = tons / 2000;
      System.out.println("\tOunces: " + ((weightInOunces - (tons * 32000)) - (pounds * 16) ));
      ounces = pounds / 16;
      }   

    }  
而不是

pounds = tons / 2000;
将磅设置为:

pounds = (weightInOunces - (tons * 32000)) / 16;
也可以删除

ounces = pounds / 16;

先以最低单位递增:

final int OUNCES_PER_POUND = 16;
final int POUNDS_PER_TON = 2000;

int value = 123456789; // value is in ounces
int ounces = value % OUNCES_PER_POUND;
value /= OUNCES_PER_POUND; // value is now in whole pounds
int pounds = value % POUNDS_PER_TON;
value /= POUNDS_PER_TON; // value is now in whole tons
int tons = value;

// prints: 3858 tons + 49 pounds + 5 ounces
System.out.printf("%d tons + %d pounds + %d ounces%n", tons, pounds, ounces);
这类似于您对时间值使用它的频率:

long value = 1472672270262L; // 2016-08-31 19:37:50.262 GMT
long millis  = value % 1000;   value /= 1000;
long seconds = value % 60;     value /= 60;
long minutes = value % 60;     value /= 60;
long hours   = value % 24;     value /= 24;
long days    = value;

// prints: 17044 days + 19 hours + 37 minutes + 50 seconds + 262 millis since Jan 1, 1970 at 00:00 GMT
System.out.printf("%d days + %d hours + %d minutes + %d seconds + %d millis since Jan 1, 1970 at 00:00 GMT%n",
                  days, hours, minutes, seconds, millis);

比较
磅=吨/2000及其上方的行。尝试
System.out.println(“切换到公制!”)。这起作用了。我应该看看这么简单的东西。谢谢
long value = 1472672270262L; // 2016-08-31 19:37:50.262 GMT
long millis  = value % 1000;   value /= 1000;
long seconds = value % 60;     value /= 60;
long minutes = value % 60;     value /= 60;
long hours   = value % 24;     value /= 24;
long days    = value;

// prints: 17044 days + 19 hours + 37 minutes + 50 seconds + 262 millis since Jan 1, 1970 at 00:00 GMT
System.out.printf("%d days + %d hours + %d minutes + %d seconds + %d millis since Jan 1, 1970 at 00:00 GMT%n",
                  days, hours, minutes, seconds, millis);