Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-从函数返回int(字符串)?_Java_String_Int_Return - Fatal编程技术网

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

Java-从函数返回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; }

我试图创建一个函数,该函数以字符串作为函数并返回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()
实现检查对象内容是否相等。

一个问题是:

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
。我已经编辑过了