我的代码在java中的逻辑错误...在switch case中

时间:2017-04-21 07:52:06

标签: java switch-statement java.util.scanner

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        int operator;
        double number1, number2, result;
        boolean ask = true;
        while (ask) {

        System.out.println("please select your operator:\n"
                + "1 for +\n" +
                "2 for -\n" +
                "3 for *\n" +
                "4 for %\n" +
                "");
        operator = myScanner.nextInt();
        System.out.println("you chose " + operator + " operator babe");


            System.out.println("please enter your first number");
            Scanner numberScanner = new Scanner(System.in);
            number1 = numberScanner.nextDouble();
            System.out.println("please enter your second number");
            Scanner numberScanner2 = new Scanner(System.in);
            number2 = numberScanner2.nextDouble();


            switch (operator) {
                case 1:
                    result = number1 + number2;
                    System.out.println("result is:" + result);
                    break;
                case 2:
                    result = number1 - number2;
                    System.out.println("result is:" + result);
                    break;
                case 3:
                    result = number1 * number2;
                    System.out.println("result is:" + result);
                    break;
                case 4:
                    result = number1 / number2;
                    System.out.println("result is:" + result);
                    break;
                default:
                    System.out.println("you chosen the wrong operator babe :)");
                    break;
            }


            System.out.println("do yo want to continue?\n" +
                    "y for yes\n" +
                    "n for no\n");
            char askInput = myScanner.next().charAt(0);
            if (askInput=='n') ask=false;
        }
    }
}

我的开关盒遇到了麻烦 如果我按任何数字或字母,如5或6或......它应该打印you chose wrong operator

我认为问题是我的默认值,但我不知道它在哪里?

4 个答案:

答案 0 :(得分:0)

只需像这样重新排序代码

`public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);
    int operator;
    double number1, number2, result;
    boolean ask = true;
    while (ask) {
        System.out.println("please enter your first number");
        Scanner numberScanner = new Scanner(System.in);
        number1 = numberScanner.nextDouble();
        System.out.println("please enter your second number");
        Scanner numberScanner2 = new Scanner(System.in);
        number2 = numberScanner2.nextDouble();

        System.out.println("please select your operator:\n"
                + "1 for +\n"
                + "2 for -\n"
                + "3 for *\n"
                + "4 for %\n"
                + "");
        operator = myScanner.nextInt();

        switch (operator) {
            case 1:
                result = number1 + number2;
                System.out.println("result is:" + result);
                break;
            case 2:
                result = number1 - number2;
                System.out.println("result is:" + result);
                break;
            case 3:
                result = number1 * number2;
                System.out.println("result is:" + result);
                break;
            case 4:
                result = number1 / number2;
                System.out.println("result is:" + result);
                break;
            default:
                System.out.println("you chosen the wrong operator babe :)");
                break;
        }
        System.out.println("you chose " + operator + " operator babe");

        System.out.println("do yo want to continue?\n"
                + "y for yes\n"
                + "n for no\n");
        char askInput = myScanner.next().charAt(0);
        if (askInput == 'n') {
            ask = false;
        }
    }
}`

你会没事的

答案 1 :(得分:-1)

只需在为运算符指定运算符时验证运算符即可。

例如,如果条件使用并检查它是否在1和5之间,如果没有打印你想要的任何东西

答案 2 :(得分:-1)

2件事:

你不需要2个只使用一个的扫描仪就足够了

代码表现如此,因为你在询问想要操作的号码后进入开关盒......

某些条件如:

operator = myScanner.nextInt();
if (operator < 1 || operator > 4) {

 }

可能有帮助......

答案 3 :(得分:-1)

至于我的评论,如果你想在用户输入另外两个数字之前验证用户做的输入(对于选项),是的,你实际上应该以这样的方式编程,即验证在第一次之后正确userinput。这是您的代码的略微更正版本。

public static void main(String[] args) {
    int operator;
    double result;
    boolean ask = true;
    Scanner numberScanner = new Scanner(System.in);
    while (ask) {

        System.out.println(
                "please select your operator:\n" + "1 for +\n" + "2 for -\n" + "3 for *\n" + "4 for %\n" + "");
        operator = numberScanner.nextInt();
        System.out.println("you chose " + operator + " operator babe");

        // Here was your "Mistake". You instantly started asking the user for another input,
        // but actually wanted to ahve the switch statment here

        switch (operator) {
        case 1:
            result = get_num1(numberScanner) + get_num2(numberScanner);
            System.out.println("result is:" + result);
            break;
        case 2:
            result = get_num1(numberScanner) - get_num2(numberScanner);
            System.out.println("result is:" + result);
            break;
        case 3:
            result = get_num1(numberScanner) * get_num2(numberScanner);
            System.out.println("result is:" + result);
            break;
        case 4:
            result = get_num1(numberScanner) % get_num2(numberScanner);
            System.out.println("result is:" + result);
            break;
        default:
            System.out.println("you chosen the wrong operator babe :)");
            break;

        }

        System.out.println("do yo want to continue?\n" + "y for yes\n" + "n for no\n");
        char askInput = numberScanner.next().charAt(0);
        if (askInput == 'n')
            ask = false;
    }
}

public static double get_num1(Scanner scanner) {
    System.out.println("please enter your first number");
    return scanner.nextDouble();
}

public static double get_num2(Scanner scanner) {
    System.out.println("please enter your second number");
    return scanner.nextDouble();
}