我的任务是制作一个程序,允许用户输入他们的出生日期,它将输出他们的中国十二生肖动物和他们的星座。该程序认为月份是未声明的变量,但我试图使它们成为变量"月"。
的值。这是代码,
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.");
答案 0 :(得分:5)
你需要在它们周围加上双引号来表明你的月份字符串:
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
Button btnClickMe = new Button(shell, SWT.NONE);
btnClickMe.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
lblStatus.setText("Clicked"); // the compiler can't find lblStatus
}
});
btnClickMe.setBounds(10, 10, 75, 25);
btnClickMe.setText("Click Me");
Label lblStatus = new Label(shell, SWT.NONE);
lblStatus.setBounds(10, 47, 75, 15);
lblStatus.setText("Not clicked.");
}
意识到用户将不得不完全投入&#34; 1月&#34;所以&#34; 1月&#34;不会工作。要实现此目的,请确保使用if (month.equals("January") && day <=20)
System.out.println("You are a Capricorn.");
功能。您也可以使用toLower
。
每个月都遵循相同的模式。每次使用字符串文字时,都需要在equalsIgnoreCase()
中。此外,如果您要比较字符串,则需要使用" "
,如上所示。
正如Luiggi在下面的评论中指出的那样,这样做会更有意义:
equals()
这样可以避免可能出现的 if ("January".equals(month) && day <=20)
错误。
答案 1 :(得分:1)
试试这个
if (month.equalsIgnoreCase("January") && day <=20)
System.out.println("You are a Capricorn.");
如果用户输入JANUARY
或january
,则会给您带来良好的效果。
答案 2 :(得分:0)
.equals(&#34; Month&#34;)是正确的,但您还需要添加&#34; else&#34;除了第一个之外的所有if语句。否则你的最终其他只会在大部分时间进行之前应用于if。
答案 3 :(得分:0)
现在Java并不真正知道你的意思January
它认为你指的是某种变量或关键字并且它不知道。
通过将"January"
放在引号中,就像你告诉java一样,这是一段文本,或者像计算机一样称它为String。
专家提示不要与使用==
的字符串进行比较,以检查您是否在两侧输入了相同的对象。由于字符串在Java中的工作方式,在某些情况下会给你带来一些奇怪的结果。因此,请始终使用myString.equals(someOtherString)
检查两个字符串是否具有相同的内容。