2016-10-30 9 views
-4

私はJavaを使い慣れていないので、クラス内の配列に完全に詰まっています。配列を操作するときに設定してメソッドを得るための答えを見つけ出そうとしていましたが、残念ながら問題が実際にどこにあるのかを知ることができませんでした。 誰かが理解してもらえるよう助けてくれると大変感謝しています。 は、ここに私のコードです:クラスとメソッドのJava配列

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 

私は、NetBeansで働いていると、それは2つのエラーメッセージを強調: - getメソッドの下:「配列必要ですが、文字列が見つかりました」 - setメソッドの下に:「互換性のない型:String []をStringに変換できません "

エラーが何であるか説明してもらえますか?それは非常にシンプルだが、私の心から逃げ出しているようだ。

private String name; 

、あなたは文字列で初期化:後であなたが文字列配列を置くしようと

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

あなたは、変数が文字列であることを宣言した

感謝

+0

コードのどこにも配列はありませんが、何らかの理由で配列があると思います。 'String'と' String [] 'はまったく異なる二つのオブジェクトです。 – Gendarme

+0

'String name'。この近くを見てください。それから 'this.name [i];'、そして 'this.name = new String [] {" Tom "、" Jerry "};' – Tunaki

+2

私が 'String [] name'の代わりに' String name [] 'という構文を嫌うのは、混乱の原因になるからです。多分それが問題です。 – Gendarme

答えて

-1

それに:

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

あなたは文字列配列としてそれにアクセスしよう:

return this.name[i]; 

文字列配列は、文字列と同じものではありません。変数を正しく宣言すると、プログラムはより良く実行されます。

private String[] name; 

であり、配列で初期化する必要があります。

public Animal(String initialName) { 
    this.name = new String[1]; 
    this.name[0] = initialName; 
} //end of constructor 

また、データメンバに使用するパラメータには同じ識別子を使用しないでください。あまりにも混乱します。

+0

配列として宣言すると、コンストラクタは意味をなさないでしょう。私はこの問題が誤植だとは思っていませんが、配列の理解です。 – Gendarme

+2

なぜ 'name'を配列に変更するのですか?動物の名前のためにStringの配列を持つのはどのような意味ですか? OPはニックネームをサポートしたいと思いますか?ありそうもない。 – Tom

+0

私は彼らが文字列配列の仕組みを学ぶ練習をしていると思います。最後のメソッドは、TomとJerryの2つの名前を示しています。 get名にはインデックスパラメータがあります。私はそのクラスが、1つの名前を持つ動物から複数の名前を持つ動物に途中で変換されていると思います。同意するならば、あなたは動物の配列を1つの名前で持つことを好むかもしれませんが、それについての質問はありませんでした。 – AgilePro

関連する問題