簡體   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