2016-06-10 64 views
-9

我是java編程語言的新手,有人可以告訴我下面錯誤的原因。java中的字符串數組錯誤?

錯誤:

不兼容的類型:java.lang.String中[]不能被轉換爲java.lang.String

public class StringArray { 

     String[] name = {"abc", "def", "ghi"}; 

     public void setStringArray() { 
      for (int i = 0; i < name.length; i++) { 
       if (name.equals(i)) { 
        System.out.println("print"); 
       } else { 
        System.out.println("wrong"); 
       } 
      } 

     } 

     public String getStringArray() { 

      return name; 
     } 



     public static void main(String[] args) { 
      StringArray sa = new StringArray(); 
      sa.setStringArray(); 
      System.out.println(sa.getStringArray()); 

     } 
    } 
+4

你也不必提,你是新來的Java。它不會影響你的問題的處理方式,從問題中可以看出。 – Kayaman

+0

如果你可以閱讀英文,那麼錯誤信息就會自我'說'出了什麼問題。 –

回答

1

您需要更改兩件事情。首先,方法

public String getStringArray() { 
    return name; 
} 

無效,因爲名稱的類型爲String [],而不是String。這是正確的:

public String[] getStringArray() { 
    return name; 
} 

其次,你的for循環邏輯是錯誤的。

 for (int i = 0; i < name.length; i++) { 
      if (name.equals(i)) { 
       System.out.println("print"); 
      } else { 
       System.out.println("wrong"); 
      } 
     } 

這會檢查一個String []是否等於一個整數。這不是正確的邏輯。您需要通過執行name[i]來獲取索引,然後執行類似try catch語句的操作來解析字符串中的整數。

 for (int i = 0; i < name.length; i++) { 
      try { 
       var nameInt = Integer.parseInt(name[i]); 
       if (nameInt.equals(i)) { 
        System.out.println("print"); 
       } else { 
        System.out.println("wrong"); 
       } 
      } catch(Exception e) { 
       e.printStackTrace(); 
      } 
     } 

你可以參考一個問題像this有關更詳盡的看到從字符串解析整數。

請注意:當您撥打sa.setStringArray();時,它什麼都不做,因爲字符串數組是硬編碼的。

+0

在什麼情況下,你認爲'String'將等於'Integer'?你爲什麼認爲這比原來的錯誤更少? –

+0

@AndyTurner編輯。感謝您指出這一點 – Li357

-1

在下面的方法中,您試圖返回一個字符串數組,但方法的返回類型是「String」,並且它是不兼容的,因爲您無法將String數組類型轉換爲String。

public String getStringArray() { 
    return name; 
    } 

改用此

public String getStringArray(){ 
    return name.toString(); 
} 
+2

在數組上調用'toString()'基本上是無用的,特別是當方法名稱暗示它返回一個數組時。 –

+0

是的,你是對的...... thnx安迪 –