Java if-else语句中的错误

Java if-else语句中的错误,java,if-statement,Java,If Statement,我正在写一篇小冒险小说,但一开始我遇到了一个错误。 我想问一下玩家的性别,一切都很顺利,但是如果写错了性别,信息就不会显示出来 我做错了什么 if (scan.next().equalsIgnoreCase("Frau")) { System.out.println("Oh eine Dame des" + sClanname + " Clans"); sGender = scan.next(); } else if

我正在写一篇小冒险小说,但一开始我遇到了一个错误。 我想问一下玩家的性别,一切都很顺利,但是如果写错了性别,信息就不会显示出来

我做错了什么

        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和else if语句中的相同字符串,因为每次调用scan.next都会返回从输入读取的新字符串

应将字符串存储在变量中并重新使用:

    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")) {

比较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\"");
        }

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

您在每个If语句中调用scan.next,如果第一个条件为false,则会再次执行它。询问一次,然后使用该结果。在第一个else分支中,您将同时调用if和else。接下来,下面的&&和| |条件也是如此;除此之外,很难说。你犯了什么错误?谢谢,我没想到!
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\"");
        }