如何使用字符串作为输入值?

0 java

我的任务是制作一个程序,允许用户输入他们的出生日期,它将输出他们的中国十二生肖动物和他们的星座.该程序认为月份是未声明的变量,但我试图使它们成为变量"月"的值.

这是代码,


int  day, year;
String month;

System.out.println("Enter the month you were born.");
month=in.nextLine();
System.out.println("Enter day you were born.");
day=in.nextInt();
System.out.println("Enter the year you were born."); 
year=in.nextInt(); 

if (month==January && day <=20)
    System.out.println("You are a Capricorn.");
if (month==January && day > 20)
    System.out.println ("You are an Aquarius.");
if (month==February && day <= 19)
    System.out.println ("You are an Aquarius.");
if (month==February && day >19)
    System.out.println ("You are a Pisces.");
if (month==March && day <= 20)
    System.out.println ("You are a Pisces.");
if (month==March && day > 20)
    System.out.println ("You are an Aries.");
if (month==April && day <= 20)
    System.out.println ("You are an Aries.");
if (month==April && day >20)
    System.out.println ("You are a Taurus.");
if (month==May && day <= 21)
    System.out.println ("You are a Taurus.");
if (month==May && day > 21)
    System.out.println ("You are a Gemini.");
if (month==June && day <= 21)
    System.out.println ("You are a Gemini.");
if (month==June && day >21)
    System.out.println ("You are a Cancer.");
if (month==July && day <=22)
    System.out.println ("You are a Cancer.");
if (month==July && day >22)
    System.out.println ("You are a Leo.");
if (month==August && day <=22)
    System.out.println ("You are a Leo.");
if (month==August && day >22)
    System.out.println ("You are a Virgo.");
if (month==September && day <=23)
    System.out.println ("You are a Virgo.");
if (month==September && day >23)
    System.out.println ("You are a Libra.");
if (month==October && day <=23)
    System.out.println ("You are a Libra.");
if (month==October && day >23)
    System.out.println ("You are a Scorpio.");
if (month==November && day <=22)
    System.out.println ("You are a Scorpio.");
if (month==November && day >22)
    System.out.println ("You are a Sagittarius.");
if (month==December && day <=21)
    System.out.println ("You are a Sagittarius.");
else
    System.out.println ("You are a Capricorn.");
Run Code Online (Sandbox Code Playgroud)

Bla*_*rai 5

你需要在它们周围加上双引号来表明你的月份字符串:

if (month.equals("January") && day <=20)
System.out.println("You are a Capricorn.");
Run Code Online (Sandbox Code Playgroud)

意识到用户将要完全放入"1月",所以"1月"将无法正常工作.为此,请确保使用该toLower功能.你也可以使用它equalsIgnoreCase().

每个月都遵循相同的模式.任何时候你使用字符串文字,它需要在" ".此外,如果您要比较字符串,则需要使用equals()如上所示.

正如Luiggi在下面的评论中指出的那样,更有意义:

 if ("January".equals(month) && day <=20)
Run Code Online (Sandbox Code Playgroud)

这将避免NullPointerException可能出现的错误.

  • `month =="January"`不是个好主意,`month.equals("January")`在Java中会更好 (4认同)
  • @AlexShesterov事实上,更好的想法是"1月".equals(月)`以避免NPE. (3认同)