if else语句出错

时间:2014-11-12 09:11:25

标签: java if-statement

我正在写一些文字冒险,但我在开始时遇到错误。 我想询问玩家的性别,一切运作良好,但是如果写错了性别的消息则不会显示。

我做错了什么?

        if (scan.next().equalsIgnoreCase("Frau")) {
            System.out.println("Oh eine Dame des" + sClanname + " Clans");
            sGender = scan.next();
        } else if (scan.next().equalsIgnoreCase("Mann")) {
            System.out.println("Oh ein Herr des" + sClanname + " Clans");
            sGender = scan.next();
        } else {
            System.out.println("Entschuldige, wir sind hier sehr konservativ...Es gibt nur \"Mann\" oder \"Frau\"");
        }

我也试过

    if (scan.next().equalsIgnoreCase("Frau") || scan.next().equalsIgnoreCase("Mann")) {
        System.out.println("Oh eine Dame des" + sClanname + " Clans");
        sGender = scan.next();
    } else {
        System.out.println("Entschuldige, wir sind hier sehr konservativ...Es gibt nur \"Mann\" oder \"Frau\"");
    }

if (!scan.next().equalsIgnoreCase("Frau") && !scan.next().equalsIgnoreCase("Mann")) {
    System.out.println("Entschuldige, wir sind hier sehr konservativ...Es gibt nur \"Mann\" oder \"Frau\"");
}

3 个答案:

答案 0 :(得分:6)

您没有在Stringif语句中对同一else if进行比较,因为每次调用scan.next()都会从输入中返回新的String读数

您应该将String存储在变量中并重复使用它:

    String s = scan.next();
    if (s.equalsIgnoreCase("Frau")) {
        System.out.println("Oh eine Dame des" + sClanname + " Clans");
        sGender = scan.next();
    } else if (s.equalsIgnoreCase("Mann")) {

答案 1 :(得分:1)

每个scan.next()都试图从输入中扫描下一行。 如果您比较相同的输入,请在变量中保存一次,然后使用。

答案 2 :(得分:0)

比较sGender而不是scan.next

if (scan.next().equalsIgnoreCase("Frau")) {
            System.out.println("Oh eine Dame des" + sClanname + " Clans");
            sGender = scan.next();
        } else if (sGender.equalsIgnoreCase("Mann")) {
            System.out.println("Oh ein Herr des" + sClanname + " Clans");
            sGender = scan.next();
        } else {
            System.out.println("Entschuldige, wir sind hier sehr konservativ...Es gibt nur \"Mann\" oder \"Frau\"");
        }