2013-04-10 54 views
1

我在创建一个是/否的输入在我的程序中有问题。我希望用户能够在上次打印语句后输入y/n,但我不太确定我将如何实现它。我知道它很可能包含布尔值或if/else语句,但我不太确定。任何帮助?是/否使用布尔值或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"); 
     } 
} 
+1

为什么不使用相同的技术来获取名称?你会得到一个字符串,然后测试它,就好像它是一个布尔型(使用equals方法) – talnicolas 2013-04-10 13:57:02

+0

你可以要求(Y)es或(N)o用户输入。 – 2013-04-10 13:57:35

+0

我假设他正在寻找一个布尔值,并且不知道如何得到那 – 2013-04-10 13:57:40

回答

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

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

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

在任何情况下,您的布尔值是通过比较文字来实现的。

2

只需添加boolean answer = in.nextLine().toLowerCase().startsWith("y");

所以基本上它设置answer为true,如果你键入任何与y开始。否则为假。

0

试试这个,

boolean answer = "y".equalsIgnoreCase(in.nextLine()); 
0

您可以使用此类似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")); 
    } 
} 
3

这是你需要什么?

String answer = in.nextLine() 
Boolean yn = (answer.equalsIgnoreCase("Y") ? true : false); 

或者,你可以使用更短的形式:

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

如果你的意思是别的东西请发表澄清。

0

我弄明白了。

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