我正在创建一个包装在一段时间内的开关,用于作业分配。除了尝试添加到totalPrice双重变量之外,一切都正常

totalPrice += priceA;
totalPrice = totalPrice + priceA;

这是我的转储,我知道这很简单,但是我的谷歌搜索和文档显示为零。

 

import java.util.Scanner;

public class Coffee {
    public static double priceA = 1.99;
    public static double priceE = 2.99;
    public static double priceL = 3.99;
    public static double totalPrice = 0;
    public static int custChoice;
    public static int counter =1;
    public static void main(String[] args) {
        menu();
         while (counter <3 && custChoice !=0) {
             menu();
             switch (custChoice) {
                 case '1':
                     totalPrice = totalPrice +priceA;
                     return;
                 case '2':
                     totalPrice = totalPrice +priceE;
                     return;
                 case '3':
                     totalPrice = totalPrice +priceL;
                     return;
                 case '0':
                     break;
                 default:
                     System.out.println("Your total is $" + totalPrice);
             }
             counter++;
         }
    }

    public static void menu() {
        Scanner input = new Scanner(System.in);
        System.out.println("Counter: " + counter);
        System.out.println("Total Price: $" + totalPrice);

        System.out.println("-----------------------------");
        System.out.println("  (1) American    1.99       ");
        System.out.println("  (2) Espresso    2.99       ");
        System.out.println("  (3) Latte       3.99       ");
        System.out.println("-----------------------------");
        System.out.println("");
        System.out.println(" Please make a selection \n\t or enter 0 to total and quit.");
        custChoice = input.nextInt();
    }
}


帮助我的StackOverflow!你是我唯一的希望。

最佳答案

您可以将default-case用于某些基本的输入错误处理,因为当未检测到其他任何情况(0,1,2,3)时,都会执行默认情况。

因此,就像其他人提到的那样,将总价格的总和移到案例0,并以返回语句结束该案例,这将结束程序的执行。

进一步,在默认情况下为用户插入一些警告文本,并告知输入错误。
为了防止出现逻辑问题,您应该将Counter减1,因为在while循环的迭代中用户没有购买任何东西,并且在Loop结束时它将增加1。

编辑:
我认为Daniel Kis的答案已经非常不错,但是对于默认情况却没有任何内容。
我接受了他的解决方案并进行了扩展:

public class Coffee {
public static double priceA = 1.99d;
public static double priceE = 2.99d;
public static double priceL = 3.99d;
public static double totalPrice = 0d;
public static int custChoice;
public static int counter =1;
public static void main(String[] args) {
    menu();
    while (counter <3) {
        switch (custChoice) {
            case 1:
                totalPrice = totalPrice +priceA;
                break;
            case 2:
                totalPrice = totalPrice +priceE;
                break;
            case 3:
                totalPrice = totalPrice +priceL;
                break;
            case 0:
                System.out.println("Your total is $" + totalPrice);
                return;
            default:
                System.out.println("This Option is not available, please try again!");
                counter--;
                break;
        }
        counter++;
        menu();
    }
}

public static void menu() {
    Scanner input = new Scanner(System.in);
    System.out.println("Counter: " + counter);
    System.out.println("Total Price: $" + totalPrice);

    System.out.println("-----------------------------");
    System.out.println("  (1) American    1.99       ");
    System.out.println("  (2) Espresso    2.99       ");
    System.out.println("  (3) Latte       3.99       ");
    System.out.println("-----------------------------");
    System.out.println("");
    System.out.println(" Please make a selection \n\t or enter 0 to total and quit.");
    custChoice = input.nextInt();
}


}

10-05 18:22