无法让Java使用if语句为变量赋值

时间:2013-12-15 16:12:24

标签: java

这段代码应该从用户那里获得一个字母输入,然后根据它的价值分配一个值。这是我在Java工作的第一部分,由于某种原因,我无法获得if语句来为变量赋值。

import java.util.Scanner;

public class LetterValues {

public static void main(String args[]){

    Scanner scanner = new Scanner(System.in);
    String letterInput1, letterInput2, letterInput3, letterInput4;
    int firstLetter = 0, secondLetter = 0, thirdLetter = 0, fourthLetter = 0;

    // Asks for first input letter
    System.out.print("What is your first letter?  ");

    // Reads the first input letter
    letterInput1 = scanner.next();

    // Converts the first letter to upper case, prints out to check
    System.out.println(letterInput1.toUpperCase());

    // Prints out first letter to check
    System.out.println(letterInput1);

    // Assigns a value to the firstLetter int based on the value of letterInput1
    if ( (letterInput1 == "A") || (letterInput1 == "E") )
    {
        firstLetter = 1;
    }
    else if ( (letterInput1 == "D") || (letterInput1 == "R") )
    {
        firstLetter = 2;
    }
    else if ( (letterInput1 == "B") || (letterInput1 == "M") )
    {
        firstLetter = 3;
    }
    else if ( (letterInput1 == "V") || (letterInput1 == "Y") )
    {
        firstLetter = 4;
    }
    else if ( (letterInput1 == "J") || (letterInput1 == "X") )
    {
        firstLetter = 8;
    }
    else
    {
        System.out.println("Error.");
    }

    System.out.println(firstLetter);
    }
}

结果是:

    What is your first letter?  A //<--input
    A
    A
    Error.
    0
    What is your second letter? 

2 个答案:

答案 0 :(得分:2)

使用equals()比较字符串:

"A".equals(letterInput1)

答案 1 :(得分:1)

使用equals()代替==来比较Strings

原因

{p} equals()类中存在

java.lang.Object方法,并且需要检查对象状态的等效性!这意味着,对象的内容。期望==运算符检查实际对象实例是否相同。

实施例

考虑两个不同的参考变量str1str2

str1 = new String("abc");
str2 = new String("abc");

如果您使用equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

您将获得TRUE

的输出

如果您使用==

 System.out.println((str1==str2)?"TRUE":"FALSE");

现在您将获得FALSE作为输出,因为str1str2都指向两个不同的对象,即使它们都共享相同的字符串内容。这是因为new String()每次创建一个新对象。