繁体   English   中英

Java-从函数(字符串)返回整数?

[英]Java - returning int from function(String)?

我正在尝试创建一个将字符串作为函数并返回int的函数。

public int convert (String input) {
    int x = -1;
    if (input == "one") {
        x = 1;
    }

    else if (input == "two") {
        x = 2;
    }

    else if (input == "three") {
        x = 3;
    }
    return x;
}

问题是(假设输入将始终是三个输入之一),该函数始终返回-1。 我试过了:

  • 返回0而不是x
  • 和:

     public int convert (String input) { if (input == "one") { return 1; } else if (input == "two") { return 2; } else if (input == "three") { return 3; } return -1; } 

多谢你们。

一个问题是:

if (input == "one") 

应该

if  ("one".equals(input)) 

字符串/对象相等性检查应使用equals()方法代替==(字符串文字比较的情况除外)

==检查引用是否相等。

equals()根据equals()实现检查对象内容是否相等。

当您比较两个String是否相等时,切勿使用“ ==”运算符。 因为“ ==”运算符检查地址相等性,即如果您要比较“ x == y”,则要检查x的值和y的值是否在同一存储位置。 这意味着==运算符会比较引用。

由于String是一个对象,当您比较2个对象时,切勿使用==运算符,因为它们会比较2个引用是否指向同一对象。

在您的情况下,输入指向一个对象,而您正在将输入与另一位置的另一个对象进行比较。

例如,您的字符串“ input”在地址位置123456包含值“ one”,而在地址位置12347处创建了新的字符串“ one”。因此input ==“ one”比较输入和不相同的地址位置。

所以在你的例子中使用

public int convert (String input) {
int x = -1;
if (input.equals("one")) {
    x = 1;
}

else if (input.equals("two")) {
    x = 2;
}

else if (input.equals("three")) {
    x = 3;
}
return x;
}

.equals方法比较对象相等性,而不引用相等性。 因此,如果使用.equals()方法比较两个对象,则将获得所需的输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM