用户输入如果Java中的语句不起作用

时间:2016-08-30 13:08:17

标签: java if-statement

我正在使用扫描仪接收用户输入。

Scanner scanner = new Scanner(System.in);

Int choice = scanner.nextInt();

if(choice==1) {
    System.out.println(" you chosed number 1!")
}

if(choice==2) {
    System.out.println(" you chosed number 2!")
}

if(choice==3) {
    System.out.println(" you chosed number 3!")
}

if(choice==q) {
    System.out.println("the game will end now!");
}

所以当你进入游戏时,你会弹出一个菜单。您可以选择1,2,3或q。如果您按任何数字,游戏将带您到这些部分。 但如果按q,游戏就会结束。

我不知道如何修复,以便我可以输入q和游戏结束。

4 个答案:

答案 0 :(得分:4)

您有一些拼写错误,而且您的逻辑错误。你错过了很多分号,他们结束了一个声明。 int何时成为char? char没有用引号括起来。使用next获取字符串版本。使用.equals()检查字符串。

Scanner scanner = new Scanner(System.in);

String choice = scanner.next();

if(choice.equals("1")) {
    System.out.println(" you chose number 1!");
} else if(choice.equals("2")) {
    System.out.println(" you chose number 2!");
} else if(choice.equals("3")) {
    System.out.println(" you chose number 3!");
} else if(choice.equalsIgnoreCase("q")) {
    System.out.println("the game will end now!");
    System.exit(0);
}

您也可以解析为整数并使用==进行比较。

上面的代码将用户输入作为字符串。然后它将检查它是否等于1,2,3或q,然后相应地执行行。检查Q并忽略大小写。

答案 1 :(得分:0)

由于命令是字符,因此请使用nextByte代替nextInt。使用switch - case代替if - else来简化您的代码。 Convert your byte into char并将其用于switch,案例将为' 1' ' 2' ' 3'并且' q'。如果您希望游戏继续'q'while - switch附近case,并且结尾为“q'”。由于这很可能是家庭作业,所以我不会写源代码。

答案 2 :(得分:0)

你不应该从扫描仪获得nextInt(),coz lateral将被忽略。 另外要防止很多if / else你可以使用switch / case。 scanner.next()将返回一些字符串,之后我们得到每个case并将该字符串与string进行比较。 添加休息以阻止行走。

    Scanner scanner = new Scanner(System.in);
    switch (scanner.next()) {
        case "q" : System.exit(0);
        case "1" :
            System.out.println("1");
            break;

        //...

        case "7" :
            System.out.print("7");
            break;
        default: System.out.print("Try one more time");
    }

如果scanner.next!=任何情况,你都会从"默认"返回消息。

答案 3 :(得分:-1)

在比较字符串时,您不能简单地使用==。 在这种情况下,您需要使用choice.equals(" q")