无法在Java中使用switch语句中的值?

时间:2015-02-16 21:44:22

标签: java switch-statement return double user-input

我在使用主方法下面的单独方法中使用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保持为零,并且没有获取返回的结果值。

2 个答案:

答案 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;
        }
}