如何使switch语句更准确?

时间:2015-01-20 13:48:03

标签: java

我们被要求使用switch语句创建一个程序..

这是我的代码:

    double price = 0, totalPrice;

    System.out.print("Enter the number of your choice: ");
    int optionNumber = Integer.parseInt(kb.readLine());

    switch(optionNumber)
    {
        case 1:
            price = 190.00;
            break;
        case 2:
            price = 410.00;
            break;
        default:
            System.out.println("ERROR: Invalid number!");
            break;
    }

    System.out.print("Enter quantity: ");
    int quantity = Integer.parseInt(kb.readLine());

    totalPrice = price * quantity;

基本上,用户将输入一定数量,并且在switch语句中将有不同的价格...... 但如果用户输入了错误的数字,它将显示错误信息,我不希望用户输入将在switch语句后执行的数量。 我们不允许使用任何方法或功能,我不想像这样重复编码:

    System.out.print("Enter the number of your choice: ");
    int optionNumber = Integer.parseInt(kb.readLine());

    switch(optionNumber)
    {
        case 1:
            price = 190.00;
            System.out.print("Enter quantity: ");
            int quantity = Integer.parseInt(kb.readLine());
            totalPrice = price * quantity;
            System.out.print("Total price: " + totalPrice);
            break;
        case 2:
            price = 410.00;
            System.out.print("Enter quantity: ");
            int quantity = Integer.parseInt(kb.readLine());
            totalPrice = price * quantity;
            System.out.print("Total price: " + totalPrice);
            break;
        default:
            System.out.println("ERROR: Invalid number!");
            break;
    }

有没有其他方法不反复使用if else,方法,函数或编码? 任何帮助都将得到赞赏。

4 个答案:

答案 0 :(得分:1)

用作:

while(!valid option)
   //do this stuff

如果输入的数字有效,请使用标记并将其设置为true,这样它将转到您的下一条指令;否则再次询问输入。

答案 1 :(得分:1)

如果选择了无效选项,您可以使用布尔标志并将其设为false 然后只询问用户flag是否为真。

    System.out.print("Enter the number of your choice: ");
    int optionNumber = Integer.parseInt(kb.readLine());
    boolean flag = true;
    switch (optionNumber) {
        case 1:
            price = 190.00;
            break;
        case 2:
            price = 410.00;
            break;
        default:
            flag = false;
            System.out.println("ERROR: Invalid number!");
            break;
    }
    if (flag) {
        System.out.print("Enter quantity: ");
        int quantity = Integer.parseInt(kb.readLine());
        totalPrice = price * quantity;
        System.out.print("Total price: " + totalPrice);
    }

答案 2 :(得分:0)

您可以从default语句中删除switch,并检查switch语句后价格是否等于0

double price = 0, totalPrice;

System.out.print("Enter the number of your choice: ");
int optionNumber = Integer.parseInt(kb.readLine());

switch(optionNumber)
{
    case 1:
        price = 190.00;
        break;
    case 2:
        price = 410.00;
        break;
}

if (price == 0)
{
     System.out.println("ERROR: Invalid number!");
}
else
{
    System.out.print("Enter quantity: ");
    int quantity = Integer.parseInt(kb.readLine());
    totalPrice = price * quantity;
    System.out.print("Total price: " + totalPrice);
}

这可以防止你添加不必要的变量(比如布尔标志),当你已经有一个(price)的默认值为0时可以检查。

答案 3 :(得分:0)

抛出异常

  default:
            throw new InvalidArgumentException("Invalid number!");

另见InvalidArgumentException vs UnexpectedValueException