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