如何在java中为单词分配数字?

时间:2013-02-18 13:00:54

标签: java if-statement methods numbers assign

我对代码的最后部分有疑问。我想为特定的单词分配数字,但我总是得到0值,即使我从第一个System.out.println正确获取这些字符串,我无法在第二个System.out.println.Any获得这些字符串的数字等价物。想法如何解决这个问题?

public static double number;

protected void myMethod(HttpServletRequest request, HttpServletResponse response) {

    String speech= request.getParameter("speech");
    System.out.println("The recognized speech is : "+ speech);

    // There is no problem till here.
    if(speech == "Hi")
        number = 1 ;
    if(speech== "Thanks")
        number = 2 ;
    if(speech== "Bye")
        number = 0 ;

    System.out.println("The number for the speech is : " + number);
}

然而,在这里,我没有得到正确的数字,但每个单词只有0!

4 个答案:

答案 0 :(得分:4)

如果字符串是同一个对象,则==仅为true。使用:

if(speech.equals("Hi"))

或无案件匹配:

if(speech.equalsIgnoreCase("hi"))

答案 1 :(得分:1)

您无法使用==运算符检查两个字符串在Java中是否具有相同的值,您需要使用.equals()equalsIgnoreCase()方法:

if("Hi".equalsIgnoreCase(speech)) {
    number = 1;
}
else if("Thanks".equalsIgnoreCase(speech)) {
    number = 2;
}
else if("Bye".equalsIgnoreCase(speech)) {
    number = 0;
}
else {
    number = -1;
}

原因是==运算符比较引用;当且仅当存储在变量true中的实例与您创建的文字字符串相同的实例时,它才会返回speech双引号之间("Hi""Thanks""Bye")。

另请注意,我对我声明的文字字符串使用equalsIgnoreCase()调用,而不是从参数分配的变量。这样,如果speech == null,方法调用仍然有效("Hi" 总是String),那么您将无法获得{ {1}},流程将一直持续到NullPointerException分支。

答案 2 :(得分:0)

请尝试以下代码段:

Main.java

public class Main {
    public static void main(String[] args) {
        List<StringWithValue> stringList = new ArrayList<StringWithValue>();
        stringList.add(new StringWithValue("Hi", 1));
        stringList.add(new StringWithValue("Thanks", 2));
        stringList.add(new StringWithValue("Bye", 3));

        String speech = "Hi";
        int number = 0;

        for(StringWithValue swv : stringList){
            if(swv.getString().equals(speech)){
                number = swv.getValue();
                break;
            } else {
                number = -1;
        }

        System.out.println("The number for the speech is : " + number);
    }
}

StringWithValue.java

public class StringWithValue {
    private String string;
    private int value;

    public StringWithValue(String string, int value) {
        this.string = string;
        this.value = value;
    }

    public String getString() {
        return string;
    }

    public int getValue() {
        return value;
    }
}

答案 3 :(得分:-2)

public static double number;

    if(speech=="hi")
    {
        number=1;
    }
    else if(speech=="thanks")
    {
        number=2;
    }
    else if(speech=="Bye")
    {
        number=0;
    }
    else
    {
        System.out.println("Word Not Found");
    }