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

时间:2015-10-20 16:22:34

标签: 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.");

4 个答案:

答案 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.");

如果用户输入JANUARYjanuary,则会给您带来良好的效果。

答案 2 :(得分:0)

.equals(&#34; Month&#34;)是正确的,但您还需要添加&#34; else&#34;除了第一个之外的所有if语句。否则你的最终其他只会在大部分时间进行之前应用于if。

答案 3 :(得分:0)

现在Java并不真正知道你的意思January它认为你指的是某种变量或关键字并且它不知道。 通过将"January"放在引号中,就像你告诉java一样,这是一段文本,或者像计算机一样称它为String。 专家提示不要与使用==的字符串进行比较,以检查您是否在两侧输入了相同的对象。由于字符串在Java中的工作方式,在某些情况下会给你带来一些奇怪的结果。因此,请始终使用myString.equals(someOtherString)检查两个字符串是否具有相同的内容。