Java 当编程设定为“不”时,返回无效的输入

Java 当编程设定为“不”时,返回无效的输入,java,Java,我正在编程的方法,重置自己时,所需的输入没有输入。但是,当输入正确的方法时,它仍然会返回该方法。大声读出大小写 你希望它不是(男孩或女孩),而不是你没有的男孩或女孩 显然,如果是女孩,就不是男孩,反之亦然,其他输入也是如此 用&&替换|,或者保留or语句,将否定移到语句前面,这样您实际上就有了“NOT(boy或girl)”。。。注意括号 您可以使用equalsIgnoreCase来减少代码 另外,尝试while(true)循环,而不是递归(在其内部调用该方法),然后对有效输入执行break 如果

我正在编程的方法,重置自己时,所需的输入没有输入。但是,当输入正确的方法时,它仍然会返回该方法。

大声读出大小写

你希望它不是(男孩或女孩),而不是你没有的男孩或女孩

显然,如果是女孩,就不是男孩,反之亦然,其他输入也是如此

&&
替换
|
,或者保留or语句,将否定移到语句前面,这样您实际上就有了“NOT(boy或girl)”。。。注意括号

您可以使用
equalsIgnoreCase
来减少代码

另外,尝试
while(true)
循环,而不是递归(在其内部调用该方法),然后对有效输入执行
break

如果希望保持递归,则该方法不需要为void。在这两种情况下,您最好
返回s
。对于递归,
返回gender()


希望这有帮助。如果您输入boy或girl(不区分大小写),它将打印一行,说明您的输入,否则将再次调用该方法,直到您输入正确的值。

您可以在输入正确时控制退出(无需再次调用),我建议您也使用
equalsIgnoreCase
。它的代码更少

看看这个:

主要内容: 示例输出: 你是男孩还是女孩

请选择一个正确的选项

你是男孩还是女孩

c

请选择一个正确的选项

你是男孩还是女孩

男孩

很好,你是个男孩

文档:

看一看.equalsIgnoreCase()方法,它在这里的一些地方可能会有所帮助。大声阅读您的代码“如果s不是‘男孩’或s不是‘女孩’…”您想要的是
&&
,而不是
|
。如果输入是boy,那么它就不是girl,因此您总是输入If语句输入“错误”的输入,即当我运行它时,不是一个男孩或女孩递归调用gender()。我能提出一个设计建议,并说考虑使用循环来代替递归吗?是的,当“<代码> S/<代码>未被分配到<代码>性别< /代码>时,在OP代码中的递归将导致很大的问题。
public static void gender(){
    System.out.println("Are you a boy or a girl?");
    Scanner name = new Scanner(System.in);
    String s = name.nextLine();
    if(!s.equals("boy") || !s.equals("girl") || !s.equals("Boy") || !s.equals("Girl")){
        System.out.println("Please pick an option");
        gender();
    }
    if(s.equals("boy")){
        System.out.println("You are a boy.");
    }
    if(s.equals("Boy")){
        System.out.print("You are a boy.");
    }
    if(s.equals("girl")){
        System.out.println("You are a girl.");
    } 
    if(s.equals("Girl")){
        System.out.print("You are a girl.");
    }
}
public static void gender(){
    System.out.println("Are you a boy or a girl?");
    Scanner name = new Scanner(System.in);
    String s = name.nextLine().toLowerCase();

    if(s.equals("boy")){
        System.out.println("You are a boy.");
    }

    else if(s.equals("girl")){
        System.out.println("You are a girl.");
    } 

    else {
        gender();
    }

}
public static void main(String[] args) {

        
        String s;
        boolean isCorrect = false;
        
        do
        {
            System.out.println("Are you a boy or a girl?");
            Scanner name = new Scanner(System.in);
            s = name.nextLine();
            if(!(s.equalsIgnoreCase ( "boy" ) || s.equalsIgnoreCase ( "girl" )))
            {
                System.out.println("Please pick a correct option");            

            }
            else
            {
                isCorrect = true;
                System.out.println ( "Nice, you are a " + s.toLowerCase ( ) );
            }
        }
        while ( !isCorrect );
        
   }