在编程时不输入返回空白

时间:2016-11-09 02:47:47

标签: java

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.");
    }
}

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

3 个答案:

答案 0 :(得分:1)

大声朗读案例......

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

显然,如果是女孩,则不是男孩,反之亦然,并且对于所有其他输入都是相同的。

||替换&&,或保留or语句,将否定移到语句的前面,这样你实际上就有了“NOT(男孩或女孩)”......注意括号。

您可以使用equalsIgnoreCase来减少代码。

此外,尝试while (true)循环而不是递归(在其自身内调用方法),并在有效输入上只调用break

如果要保留递归,则该方法不必为空。最好在任何一种情况下都return s。对于递归,return gender()

答案 1 :(得分:0)

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();
    }

}

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

答案 2 :(得分:0)

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

看看这个:

主:

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 );

   }

示例输出:

  

你是男孩还是女孩?

     

取值

     

请选择正确的选项

     

你是男孩还是女孩?

     

C

     

请选择正确的选项

     

你是男孩还是女孩?

     

男孩

     

很好,你还是个男孩

文档:

Control Flow Statements