Java-从函数返回int(字符串)?
我试图创建一个函数,该函数以字符串作为函数并返回intJava-从函数返回int(字符串)?,java,string,int,return,Java,String,Int,Return,我试图创建一个函数,该函数以字符串作为函数并返回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; }
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()
实现检查对象内容是否相等。一个问题是:
if (input == "one")
应该是
if ("one".equals(input))
字符串/对象相等性检查应使用equals()方法,而不是==(字符串文字比较的情况除外)
=
检查引用是否相等
equals()
根据equals()
实现检查对象内容是否相等。在比较两个字符串是否相等时,切勿使用“==”运算符。因为“==”运算符检查地址相等性,即如果比较“x==y”,则检查x的值和y的值是否在同一内存位置。这意味着==运算符比较引用
因为字符串是一个对象,在比较两个对象时,在比较两个引用是否指向同一对象时,不要使用==运算符
在您的例子中,输入指向一个对象,您正在将输入与位于不同位置的另一个对象进行比较
例如,您的字符串“input”在地址位置123456处包含值“one”,而您的新字符串“one”是在地址位置12347处创建的。所以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()方法比较两个对象,您将获得所需的输出。在比较两个字符串是否相等时,请不要使用“==”运算符。因为“==”运算符检查地址相等性,即如果比较“x==y”,则检查x的值和y的值是否在同一内存位置。这意味着==运算符比较引用 因为字符串是一个对象,在比较两个对象时,在比较两个引用是否指向同一对象时,不要使用==运算符 在您的例子中,输入指向一个对象,您正在将输入与位于不同位置的另一个对象进行比较 例如,您的字符串“input”在地址位置123456处包含值“one”,而您的新字符串“one”是在地址位置12347处创建的。所以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()方法比较两个对象,您将获得所需的输出。第一个方法将始终返回
0
,而不是-1
。我编辑了它第一个方法将始终返回0
,而不是-1
。我已经编辑过了