【问题标题】:How do you set up an infinite loop in scanners?如何在扫描仪中设置无限循环?
【发布时间】:2024-01-03 17:21:01
【问题描述】:

我是 Java 初学者,所以我对此有疑问 我正在尝试创建一个简单的代码,我已经完成了它,只是我想知道你如何设置一个用户可以输入的无限提问问题?我现在有一个无限循环,这没有帮助......

    import java.util.Scanner;
    public class Logical_Operators {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Scanner input = new Scanner(System.in);
            
            //this is a conditional scenario, where only boys above the age of 18 can enter
            //and only girls equal to or over the age of 20 
            
            String gender, boy, girl, response;
            int age;
            
            System.out.println("Welcome to the party! Would you like to enter?");
            response = input.nextLine();
        
        while(!response.equals("yes") && !response.equals("no"))    {
            System.out.println("Please say Yes or No");
        }
        {
            
            if(response.equals("yes"))  {       
                
                System.out.println("What gender are you? Type boy or girl.");
                gender = input.nextLine();
                
                System.out.println("What about your age?");
                age = input.nextInt();
                
                    if(gender.equals("boy") && age >= 18)   {
                    System.out.println("You can enter, Welcome!"); 
                    
                }
                    else if(gender.equals("girl") && age >= 20) {
                    System.out.println("You can enter, Welcome!");  }
                 
                    else { System.out.println("Sorry, you may not enter because you don't meet the age requirements");  }
                
            }
            
            else if(!(response.equals("yes")||response.equals("no")))   {
                System.out.println("Please say Yes or No");
                
            }
            
            else { 
                System.out.println("Bye, hope to see you again!");
            }
            
        System.exit(1);
        }
            
        }
    
    }

【问题讨论】:

  • 请修正你的源代码的缩进,这样更容易阅读(特别适合你)。

标签: java while-loop equals control-structure


【解决方案1】:

为了跳出循环,你需要得到一个新的值来测试

response = input.nextLine();

while(!response.equals("yes") && !response.equals("no"))    {
    System.out.println("Please say Yes or No");
    response = input.nextLine();
}

【讨论】:

  • 您好,感谢您的回复,它成功了。但是有没有办法我可以对性别和年龄做同样的事情?就像无限循环一样。我尝试过使用相同的方法,但即使我输入男孩或女孩,它也会继续提问。
  • 您应该能够使用完全相同的逻辑。请记住用您要求的新术语替换“是”和“否”
【解决方案2】:
  1. 您需要将逻辑放在当前代码中不存在的循环中。在您的代码中,只有 System.out.println("Please say Yes or No"); 在循环内。
  2. 您可以使用无限循环(即while (true) { }),当输入与退出条件匹配时,您可以使用break
  3. 另外,我建议您使用equalsIgnoreCase 而不是equals 以不区分大小写的方式测试相等性。
  4. 我还建议您使用age = Integer.parseInt(input.nextLine()) 而不是 age = input.nextInt() 以避免here 讨论的问题。

演示:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // this is a conditional scenario, where only boys above the age of 18 can enter
        // and only girls equal to or over the age of 20

        String gender, response;
        int age;

        while (true) {
            System.out.println("Welcome to the party! Would you like to enter?");
            System.out.print("Please say Yes or No: ");
            response = input.nextLine();
            if (response.equalsIgnoreCase("no")) {
                System.out.println("Bye, hope to see you again!");
                break;
            }

            if (response.equalsIgnoreCase("yes")) {
                System.out.print("What gender are you? Type boy or girl: ");
                gender = input.nextLine();

                System.out.print("What about your age?: ");
                age = Integer.parseInt(input.nextLine());

                if (gender.equalsIgnoreCase("boy") && age >= 18) {
                    System.out.println("You can enter, Welcome!");
                } else if (gender.equalsIgnoreCase("girl") && age >= 20) {
                    System.out.println("You can enter, Welcome!");
                } else {
                    System.out.println("Sorry, you may not enter because you don't meet the age requirements");
                }
            }
        }
    }
}

示例运行:

Welcome to the party! Would you like to enter?
Please say Yes or No: yes
What gender are you? Type boy or girl: boy
What about your age?: 24
You can enter, Welcome!
Welcome to the party! Would you like to enter?
Please say Yes or No: yes
What gender are you? Type boy or girl: girl
What about your age?: 19
Sorry, you may not enter because you don't meet the age requirements
Welcome to the party! Would you like to enter?
Please say Yes or No: yes
What gender are you? Type boy or girl: girl
What about your age?: 21
You can enter, Welcome!
Welcome to the party! Would you like to enter?
Please say Yes or No: no
Bye, hope to see you again!

【讨论】: