2016-10-30 4 views
-4

Ich bin neu in Java und wurde vollständig in Arrays in Klassen stecken. Habe versucht, herauszufinden, die Antwort zu setzen und Methode beim Arbeiten mit Arrays zu bekommen, konnte leider nicht den Kopf bekommen, wo das Problem tatsächlich war. Würde sehr schätzen, dass jemand bitte helfen könnte, es herauszufinden. Hier ist mein Code:Java-Arrays in Klassen und Methoden

public class Animal { 
    private String name; 
     public Animal(String name) { 
      this.name = name; 
     } //end of constructor 

     public String getName(int i) { 
      return this.name[i]; 
     } //end of getName 

     public void setName(String name[]) { 
      this.name = new String[] {"Tom", "Jerry"}; 
     } //end of setName 

} //end of class Animal 

ich in NetBeans arbeiten bin und es hebt zwei Fehlermeldungen: - unter get-Methode: "ein Array erforderlich, aber String gefunden" - unter Set-Methode: „inkompatible Typen : String [] kann „nicht zu String umgewandelt werden soll

kann jemand bitte erklären, was der Fehler? Scheint, es ist ganz einfach, aber rutscht mir aus dem Kopf.

Vielen Dank

+0

Es gibt keine Array irgendwo im Code, aber aus irgendeinem Grund denken Sie da ist. 'String' und' String [] 'sind zwei völlig unterschiedliche Objekte. – Gendarme

+0

'String-Name'. Schau dir das näher an. Dann 'this.name [i];', und dann 'this.name = new String [] {" Tom "," Jerry "};'. – Tunaki

+2

Der Grund, warum ich die Syntax 'String name nicht mögen []' statt 'String [] name', ist, dass es zu Verwechslungen führen kann. Vielleicht ist das das Problem. – Gendarme

Antwort

-1

Sie haben die Variable deklariert eine Zeichenfolge zu sein:

private String name; 

und Sie initialisieren es mit einer Schnur:

public Animal(String name) { 
    this.name = name; 
} //end of constructor 

später Sie versuchen, ein String-Array zu setzen hinein:

this.name = new String[] {"Tom", "Jerry"}; 

und Sie versuchen, es als ein String-Array zuzugreifen:

return this.name[i]; 

String-Arrays nicht das Gleiche wie eine Zeichenfolge sind. Deklarieren Sie die Variable korrekt und das Programm wird besser ausgeführt.

private String[] name; 

und müssen Sie es mit einem Array initialisieren.

Verwenden Sie nicht denselben Bezeichner für einen Parameter, den Sie für ein Datenelement verwenden. Zu verwirrend.

+0

Wenn er es als ein Array deklariert, wird sein Konstruktor keinen Sinn ergeben. Ich glaube nicht, dass es sich um einen Tippfehler handelt, sondern um das Verständnis von Arrays. – Gendarme

+2

Warum bestehen Sie darauf, 'name' in ein Array zu ändern? Welchen Sinn macht es, eine Reihe von String für einen Namen eines Tieres zu haben? Denken Sie, dass OP Nicknamen unterstützen will? Unwahrscheinlich. – Tom

+0

Ich denke, sie machen eine Übung, um zu lernen, wie String-Arrays funktionieren. Die letzte Methode zeigt zwei Namen: Tom und Jerry. Der get Name hat einen Index Parameter. Ich denke, dass die Klasse auf halbem Wege von einem Tier mit einem Namen zu einem Tier mit mehreren Namen konvertiert ist. Vereinbaren Sie, vielleicht bevorzugen Sie eine Reihe von Tieren, jeder mit einem Namen, aber die Frage war nicht darüber. – AgilePro

Verwandte Themen