我必須編寫一個程序來轉換線性單位in,ft,mi,mm,cm,m,km。我知道有更簡單更好的方法來做到這一點。我認爲我們只是試圖完全理解,如果陳述。但這是迄今爲止我所擁有的。我只是想弄清楚我是否在正確的軌道上。我試圖寫出一些僞代碼,但它看起來像很多,所以我覺得它有點壓倒性。接下來,我將添加一種方法將窗體或mm轉換爲用戶選擇的任何內容。使用if語句轉換單位?
當我測試程序,我得到這個:UnitConversion @ 76c5a2f7(編輯:這個問題是固定的) 好吧,我做了建議的更改,並允許程序的第一部分正常運行。我現在已經添加了第二種方法來將in/mm轉換爲其他測量值。我遇到了問題,但我已經找到了答案。
這是我的主要方法;
public class LinearConversion
{
public static void main(String[] args)
{
UnitConversion newConvert = new UnitConversion("km", "m", 100);
System.out.println(newConvert);
}
}
有什麼建議嗎?我錯過了什麼或不瞭解做這種程序?
public class UnitConversion
{
private String input;
private String output;
private double value;
private double temp;
private double in, ft, mi, mm, cm, m, km;
private final double inch_feet = 12;
private final double inch_miles = 63360;
private final double inch_millimeters = 25.4;
private final double inch_centimeters = 2.54;
private final double inch_meters = 0.0254;
private final double inch_kilometers = 0.0000254;
private final double millimeters_inch = 0.0393701;
private final double millimeters_feet = 0.00328084;
private final double millimeters_miles = 0.000000622;
private final double millimeter_centimeters = 10;
private final double millimeter_meters = 1000;
private final double millimeter_kilometers = 1000000;
public UnitConversion(String in, String out, double val)
{
input = in;
output = out;
value = val;
}
public String toString()
{
if (input.equals("mi"))
{
in = value * inch_miles;
input = "in";
}
else if (input.equals("ft"))
{
in = value * inch_feet;
input = "in";
}
else
{
in = value;
input = "in";
}
if (input.equals("km"))
{
mm = value * millimeter_kilometers;
input = "mm";
}
else if (input.equals("m"))
{
mm = value * millimeter_meters;
input = "mm";
}
else if (input.equals("cm"))
{
mm = value * millimeter_centimeters;
input = "mm";
}
else
{
mm = value;
input = "mm";
}
return value + input + " " + output;
}
public double getUnit()
{
if (input.equals("in"))
{
if (output.equals("ft"))
{
ft = in * inch_feet;
System.out.println(ft + "ft");
}
else if (output.equals("mi"))
{
mi = in * inch_miles;
System.out.println(mi + "mi");
}
else if (output.equals("mm"))
{
mm = in * inch_millimeters;
System.out.println(mm + "mm");
}
else if (output.equals("cm"))
{
cm = in * inch_centimeters;
System.out.println(cm + "cm");
}
else if (output.equals("m"))
{
m = in * inch_meters;
System.out.println(m + "m");
}
else if (output.equals("km"))
{
km = in * inch_kilometers;
System.out.println(km + "km");
}
else
{
System.out.println(in + "in");
}
}
else
{
if (output.equals("cm"))
{
cm = mm * millimeter_centimeters;
System.out.println(cm + "cm");
}
else if (output.equals("m"))
{
m = mm * millimeter_meters;
System.out.println(m + "m");
}
else if (output.equals("km"))
{
km = mm * millimeter_kilometers;
System.out.println(km + "km");
}
else if (output.equals("in"))
{
in = mm * millimeters_inch;
System.out.println(in + "in");
}
else if (output.equals("ft"))
{
ft = mm * millimeters_feet;
System.out.println(ft + "ft");
}
else if (output.equals("mi"))
{
mi = mm * millimeters_miles;
System.out.println(mi + "mi");
}
else
{
System.out.println(mm + "mm");
}
}
}
我建議你使用'的System.out.println(newConvert.getInput())'代替:) – ccjmne
考慮使用'之開關,而不是'如果...別的if'。查看[switch語句的Java教程](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html)。此外,作爲預防措施,將輸入轉換爲小寫。 – Barranka
如果你使用枚舉,你也可以減少代碼的數量。您可以將字段添加到枚舉(要轉換爲一個單位的因子,例如米)。您可以將轉換寫爲單線,然後將這些因子與單位相關聯,而不是使用所有這些雙常數。 – fabian