Java 是/否,带布尔值还是if/else?

Java 是/否,带布尔值还是if/else?,java,boolean,Java,Boolean,我在程序中创建“是/否”输入时遇到问题。我希望用户能够在最后一个print语句之后输入y/n,但我不太确定如何实现它。我知道它很可能包含一个布尔或if/else语句,但我不太确定。有什么帮助吗 import java.util.*; import java.io.*; import java.util.Scanner; public class Person { public static void main(String[]args) { int age; Strin

我在程序中创建“是/否”输入时遇到问题。我希望用户能够在最后一个print语句之后输入y/n,但我不太确定如何实现它。我知道它很可能包含一个布尔或if/else语句,但我不太确定。有什么帮助吗

import java.util.*;
import java.io.*; 
import java.util.Scanner;

public class Person 
{
public static void main(String[]args) 
{

    int age;
    String name;

    Scanner scan = new Scanner(System.in);

    System.out.println("Enter in your age.");
    age = scan.nextInt();

        if (age >= 10 && age < 18) 
        {
            System.out.println("So you're a kid, huh?");
        } 

        else if (age < 10)
        {
            System.out.println("Nice try.");
            System.exit(0);
        }
        else if (age >= 18 && age <= 100)
        {
            System.out.println("So you're an adult, huh?");
        }
        else if (age > 100)
        {
            System.out.println("Nice try.");
            System.exit(0);
        }

        Scanner in = new Scanner(System.in);
        System.out.println("Enter in your name");
        name = in.nextLine();

        System.out.println("So you're " + age + " years old and your name is " + name + "?");

        System.out.println("y/n");
        }
}
import java.util.*;
导入java.io.*;
导入java.util.Scanner;
公共阶层人士
{
公共静态void main(字符串[]args)
{
智力年龄;
字符串名;
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入您的年龄”);
age=scan.nextInt();
如果(年龄>=10岁和年龄<18岁)
{
System.out.println(“那么你是个孩子,是吗?”);
} 
否则,如果(年龄<10岁)
{
System.out.println(“很好的尝试”);
系统出口(0);
}
否则,如果(年龄>=18岁和年龄100岁)
{
System.out.println(“很好的尝试”);
系统出口(0);
}
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入您的姓名”);
name=in.nextLine();
System.out.println(“那么你是“+age+”岁,你的名字是“+name+”?”;
系统输出打印项次(“是/否”);
}
}

您可以读取字符串并将其与文字“y”进行比较。比较产生一个布尔值

您可以将此扩展为首先检查它是否为“y”或“n”,如果不是则抱怨,或者缩小范围以接受其他等价项,如“是”和“否”


在任何情况下,您的布尔值都是通过与文本进行比较来实现的。

只需在.nextLine().toLowerCase().startsWith(“y”)

因此,如果您键入以
y
开头的任何内容,它基本上将
answer
设置为true。否则为false。

试试这个

String answer;
boolean yn;

System.out.println("y/n");
while (true) {
  answer = in.nextLine().trim().toLowerCase();
  if (answer.equals("y")) {
    yn = true;
    break;
  } else if (answer.equals("n")) {
    yn = false;
    break;
  } else {
     System.out.println("Sorry, I didn't catch that. Please answer y/n");
  }
}
boolean answer = "y".equalsIgnoreCase(in.nextLine());

您可以使用
do-while-loop
进行如下操作:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        int age;
        String name;
        String input = "y";
        do {
            Scanner scan = new Scanner(System.in);

            System.out.println("Enter in your age.");
            age = scan.nextInt();

            if (age >= 10 && age < 18) {
                System.out.println("So you're a kid, huh?");
            }

            else if (age < 10) {
                System.out.println("Nice try.");
                System.exit(0);
            } else if (age >= 18 && age <= 100) {
                System.out.println("So you're an adult, huh?");
            } else if (age > 100) {
                System.out.println("Nice try.");
                System.exit(0);
            }

            Scanner in = new Scanner(System.in);
            System.out.println("Enter in your name");
            name = in.nextLine();

            System.out.println("So you're " + age
                    + " years old and your name is " + name + "?");

            Scanner sc = new Scanner(System.in);
            System.out.println("y/n");
            input = sc.nextLine();
        } while (input.equalsIgnoreCase("y"));
    }
}
import java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
智力年龄;
字符串名;
字符串输入=“y”;
做{
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入您的年龄”);
age=scan.nextInt();
如果(年龄>=10岁和年龄<18岁){
System.out.println(“那么你是个孩子,是吗?”);
}
否则,如果(年龄<10岁){
System.out.println(“很好的尝试”);
系统出口(0);
}否则,如果(年龄>=18岁和年龄100岁){
System.out.println(“很好的尝试”);
系统出口(0);
}
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入您的姓名”);
name=in.nextLine();
System.out.println(“那么你是”+年龄
+“岁,你的名字是“+名字+”?”;
扫描仪sc=新的扫描仪(System.in);
系统输出打印项次(“是/否”);
输入=sc.nextLine();
}while(input.equalsIgnoreCase(“y”));
}
}
这就是你需要的吗

String answer = in.nextLine()
Boolean yn = (answer.equalsIgnoreCase("Y") ? true : false);
或者,您可以使用较短的格式:

Boolean yn = (answer.equalsIgnoreCase("Y"));

如果你的意思是其他的,请发布一个澄清。

我已经弄明白了

import java.util.Scanner;

public class MuseumHours2 {
    public static void main(String[] args) {
        String day;
        boolean yn = true;
        boolean userContinue;
        String answer;

        Scanner stdIn = new Scanner(System.in);


        do {
            System.out.println("Hello, thank you for visiting the Museum 
    website. For what day would you like to check our hours of operation?");
            day = stdIn.nextLine();

            System.out.println("Is today a holiday? Enter y or n.");
            answer = stdIn.nextLine();
                if (answer.equals("y")) {
                    yn = true;
                } else if (answer.equals("n")) {
                    yn = false;
                } else { 
                    System.out.println("Sorry, I didn't understand. Please reply y or n.");
                }

            switch (day) {
            case "Monday":
                System.out.println("Closed.");
                break;

            case "Tuesday":
                if (yn) {
                    System.out.println("We are open from 1:00 to 4:00.");
                } else {
                    System.out.println("We are open from 12:00 to 5:00.");
                }
                break;
            case "Wednesday":
                if (yn) {
                    System.out.println("We are open from 2:00 to 5:00.");
                } else { 
                    System.out.println("We are open from 1:00 to 6:00.");
                    break;
                }
            case "Thursday":
                System.out.println("Closed.");
                break;
                }
            System.out.println("Do you want to re-run the program? Type y or n.");
        } while (userContinue = "y".equalsIgnoreCase(stdIn.nextLine()));
    }
}
这里有一个例子

publicstaticvoidmain(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
布尔yn;
字符串ageq;
System.out.println(“请输入您的年龄:”;
ageq=sc.next();
System.out.println(“您输入了“+ageq+”是否正确?”);
系统输出打印项次(“是/否”);
外部:
while(true){
ageq=sc.next().trim().toLowerCase();
开关(ageq){
案例“y”:
yn=真;
打破外部;
案例“n”:
yn=假;
打破外部;
违约:
System.out.println(“对不起,我没听清楚。请输入y/n”);
打破
}
}
}

使用
org.apache.commons.lang3.BooleanUtils.toBooleanObject()
,它将为“Yes”和“Y”返回true

为什么不使用与获取名称相同的技术?你会得到一个字符串,然后测试它,就像它是一个布尔值一样(使用equals方法),你可以要求用户输入一个(Y)es或(N)o。我假设他正在从中寻找一个布尔值,但不知道如何得到它。我的意思是,我希望用户能够输入一个“Y”或“N”,如果是“Y”,它会继续,如果是“N”,那么它会返回到开始。。这将要求所有数据都是布尔值。。倒霉。