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.");
}
}
当输入所需的输入时,我编程方法重置自己。但是,当输入正确的方法时,它仍会返回该方法。
答案 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
请选择正确的选项
你是男孩还是女孩?
男孩
很好,你还是个男孩