我在使用主方法下面的单独方法中使用switch语句中的值时遇到问题。我怎么能得到它所以我可以使用我试图从switch语句返回的值?这是我的代码:
private static int itemNo;
private static double userQuantity;
private static double oneTotal, twoTotal, threeTotal, fourTotal, fiveTotal;
private static double result;
public static void main(String[]args){
double totalAmount = 0;
Scanner input = new Scanner(System.in);
double tA = calculateTotal(itemNo);
totalAmount += result;
while(true){
System.out.print("Please enter the item number you wish to use, or enter -1 to stop: ");
int itemNo = input.nextInt();
if(itemNo == -1){
System.out.println("The total value of the purchase is: " + totalAmount);
break;
}
System.out.println("Now please input the quantity of the item you specified above: ");
double userQuantity = input.nextInt();
}
}
public static double calculateTotal(int itemNo){
double result = 0;
switch(itemNo){
case 1:
double oneTotal = 2.98 * userQuantity;
break;
case 2:
double twoTotal = 4.50 * userQuantity;
break;
case 3:
double threeTotal = 9.98 * userQuantity;
break;
case 4:
double fourTotal = 4.49 * userQuantity;
break;
case 5:
double fiveTotal = 6.87 * userQuantity;
break;
}
result = oneTotal + twoTotal + threeTotal + fourTotal + fiveTotal;
return result;
}
我试图得到它所以它允许用户输入他们想要使用的项目编号,然后输入他们购买的项目的数量,然后返回在switch语句中计算的值以便使用结果,一旦他们键入" -1"停止该计划。但是,totalAmount保持为零,并且没有获取返回的结果值。
答案 0 :(得分:1)
Java中的变量范围限定为最近的{
}
块,在本例中为switch
语句。这意味着您定义的双打仅在switch
内的范围内。
取代您当前正在执行的模式,将total
值保留在switch
之外,最初设置为0
,并替换您的变量声明({{1}与double oneTotal =
同等。然后只需返回total +=
。
关于变量范围的一些相关问题:
我也看到你的输入处理被破坏了;您反复阅读total
的输入,但在阅读输入后从未调用itemNo
。可能就像在calculateTotal()
电话后移动calculateTotal()
来电一样简单,但您可能需要稍微尝试一下。
答案 1 :(得分:0)
嗯......你在每个break
中都有case
所有变量都是多余的。
这应该同样有效:
public static double calculateTotal(int itemNo){
switch(itemNo){
case 1:
return (2.98 * userQuantity);
case 2:
return (4.50 * userQuantity);
case 3:
return (9.98 * userQuantity);
case 4:
return (4.49 * userQuantity);
case 5:
return (6.87 * userQuantity);
default:
return 0;
}
}