2016-06-10 9 views
-9

Ich bin neu in Java Programmiersprache, könnte jemand bitte sagen Sie mir den Grund für die folgenden Fehler.String Array Fehler in Java?

Fehler:

inkompatible Typen: java.lang.String [] kann nicht in java.lang.String umgewandelt werden

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

Sie auch brauchen nicht zu erwähnen, dass Sie verwenden, um Java neu sind. Es hat keinen Einfluss auf die Art und Weise, wie Ihre Frage behandelt wird, und es ist offensichtlich aus der Frage. – Kayaman

+0

Wenn Sie Englisch lesen können, dann die Fehlermeldung selbst "sagen", was falsch ist. –

Antwort

1

Sie müssen zwei Dinge ändern. Zuerst ist die Methode

Ist ungültig, da Name vom Typ String [], nicht String ist. Das ist richtig:

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

Zweitens ist Ihre for-Schleife Logik falsch.

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

Dies überprüft, ob ein String [] gleich einer Ganzzahl ist. Das ist nicht die richtige Logik. Sie müssen den Index erhalten, indem Sie name[i] tun, dann tun Sie etwas wie eine try catch-Anweisung, um die ganze Zahl aus der Zeichenfolge zu analysieren.

 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(); 
      } 
     } 

Sie können wie this für einen gründlicheren Blick auf eine Frage beziehen sich in ganzen Zahlen von Strings parsen.

Nur eine Anmerkung: Wenn Sie sa.setStringArray(); aufrufen, tut es nichts, weil das String-Array fest codiert ist.

+0

Unter welchen Umständen glauben Sie, dass ein "String" gleich einem "Integer" ist? Warum denkst du, das ist weniger falsch als das Original? –

+0

@AndyTurner Bearbeitet. Vielen Dank, dass Sie darauf hingewiesen haben. – Li357

-1

In der folgenden Methode versuchen Sie, ein Array von Zeichenfolge zurückzugeben, aber der Rückgabetyp Ihrer Methode ist "String" und es ist inkompatibel, weil Sie ein Array von String nicht in String schreiben können.

public String getStringArray() { 
    return name; 
    } 

statt diese

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

Das Aufrufen von 'toString()' auf einem Array ist grundsätzlich nutzlos, besonders wenn der Methodenname impliziert, dass ein Array zurückgegeben wird. –

+0

Ja, du hast recht .... thnx Andy –