我创建了可转换单位的移动应用,
主Java代码中的一个函数,它接收输入的数字和需要从中转换的单位以及需要转换成的单位,之后进行计算并返回值,但是,问题是函数总是返回值0.0
此功能的以下代码:
public double areaConvert(double originalNumber, String originalUnit, String newUnit)
{ //Begin convertArea
//Make two doubles, one that holds the original and one that will be redefined where needed
//Make two strings, capturing the units fed to the method
String originalU = originalUnit.toLowerCase();
String newU = newUnit.toLowerCase();
double num1 = originalNumber;
double num2 = 0.0;
switch(originalU) {
//Begin unit conversions
case "12":
switch (newU) {
case "12":
num2 = originalNumber;
break;
case "14":
num2 = (num1 * 12) / 14;
break;
case "18":
num2 = (num1 * 12) / 18;
break;
case "21":
num2 = (num1 * 12) / 21;
break;
case "22":
num2 = (num1 *12) / 22;
break;
case "24":
num2 = (num1 *12) /24;
break;
}
break;
case "14":
switch (newU) {
case "12":
num2 = (num1 * 14) /12;
break;
case "14":
num2 = num1;
break;
case "18":
num2 = (num1 * 14) / 18;
break;
case "21":
num2 = (num1 * 14) /21;
break;
case "22":
num2 = (num1 *14) / 22;
break;
case "24":
num2 = (num1 *14) / 24;
break;
}
break;
case "18":
switch (newU) {
case "12":
num2 = (num1 * 18) /12;
break;
case "14":
num2 = (num1 * 18) / 14;
break;
case "18":
num2 = num1 ;
break;
case "21":
num2 = (num1 * 18) / 21;
break;
case "22":
num2 = (num1 * 18) / 22;
break;
case "24":
num2 = (num1 * 18) / 24;
break;
}
break;
case "21":
switch (newU) {
case "12":
num2 = (num1 * 21) /12;
break;
case "14":
num2 = (num1 * 21) / 14;
break;
case "18":
num2 = (num1 * 21) / 18;
break;
case "21":
num2 = num1 ;
break;
case "22":
num2 = (num1 * 21) / 22;
break;
case "24":
num2 = (num1 * 21) / 24;
break;
}
break;
case "22":
switch (newU) {
case "12":
num2 = (num1 * 22) /12;
break;
case "14":
num2 = (num1 * 22) / 14;
break;
case "18":
num2 = (num1 * 22) / 18;
break;
case "21":
num2 = (num1 * 22) / 21;
break;
case "22":
num2 = num1 ;
break;
case "24":
num2 = (num1 * 22) / 24;
break;
}
break;
case "24":
switch (newU) {
case "12":
num2 = (num1 * 24) /12;
break;
case "14":
num2 = (num1 * 24) / 14;
break;
case "18":
num2 = (num1 * 24) / 18;
break;
case "21":
num2 = (num1 * 24) / 21;
break;
case "22":
num2 = (num1 * 24) / 22;
break;
case "24":
num2 = num1 ;
break;
}
break;
} //End conversion table
return num2;
//Return the resulting number from the conversion table above
} //End convertArea
} //End converter class
我建议对'default:'案例进行编码,以检测不适当的输入。也许只是打印出“无法到达这里”以及您所打开的内容的值。
num2 = num1 * Double.parseDouble(originalU) / Double.parseDouble(newU);