我不明白爲什麼它總是返回arg1的值。我正在構建一個權重轉換器。在Java中使用開關的問題
public double convert(double arg1,int arg2,int arg3) {
// arg1 = amount, arg2 = from, arg3 = to
double milligram = 1;
double gram = 1000;
double ounce = 28349.5;
double pound = 453592;
double answer = 0;
switch(arg2) {
case 0: switch(arg3) { // if milligram
case 0: answer = (arg1 * milligram)/milligram;
case 1: answer = (arg1 * milligram)/gram;
case 2: answer = (arg1 * milligram)/ounce;
case 3: answer = (arg1 * milligram)/pound;
}
case 1: switch(arg3) { // if gram
case 0: answer = (arg1 * gram)/milligram;
case 1: answer = (arg1 * gram)/gram;
case 2: answer = (arg1 * gram)/ounce;
case 3: answer = (arg1 * gram)/pound;
}
case 2: switch(arg3) { // if ounce
case 0: answer = (arg1 * ounce)/milligram;
case 1: answer = (arg1 * ounce)/gram;
case 2: answer = (arg1 * ounce)/ounce;
case 3: answer = (arg1 * ounce)/pound;
}
case 3: switch(arg3) { // if pound
case 0: answer = (arg1 * pound)/milligram;
case 1: answer = (arg1 * pound)/gram;
case 2: answer = (arg1 * pound)/ounce;
case 3: answer = (arg1 * pound)/pound;
}
} // end arg2 switch
return answer;
}
我搞砸了我的邏輯,但我無法看到在哪裏。 任何幫助,將不勝感激。
你爲什麼不直接給出你的論點的數量,從和到? –
在這種情況下,最好使用數組並完全刪除交換機。像'answer =(arg1 * conv [arg2])/ conv [arg3];' – irrelephant
@irrelephant我喜歡使用switch語句,因爲它們對於我來說更容易理解。我很久沒有使用它們,所以我完全忘記了必須打破每個案例。 –