-1

私はJavaを初めて使用し、非静的メソッドの呼び出しに問題があります

これが私のメインです

    public static void main(String[] args) {
    Fish f1 = new Fish("Nemo");
    Fish f2 = new Fish("Dory");
    f2.setNumber(2);
    Fish m = new Fish("Bruce");
    m.setNumber(3);
    Fish.printAllFish();
}

これは私の魚のクラスです

import java.util.ArrayList;
import java.util.List;


public class Fish {
protected String name;
protected int number;
protected List<Fish> fishList = new ArrayList<Fish>();


public Fish(String in){
name = in;
number = 1;
fishList.add(this);
}




public void printFish(){
    System.out.println("the fish called" + name + " is number " + number );
}
public void setNumber(int Number){
    this.number = number;
}
public int getNumber(){
 return number;   
}
public String getName(){
 return name;
}
public int getFishNumOf(){
    return fishList.size();

}

public void printAllFish(){
    int size = this.getFishNumOf();
    System.out.println("There are " + size + " fish:");
    for (int i = 0; i < size; i++){
        String a = getName();
        int b = getNumber();
        System.out.println("The Fish " + a + " is number " + b );
    }
}
}

printAllFish を呼び出そうとすると、非静的エラーが発生します。おそらく初歩的な間違いを犯していることはわかっていますが、プログラミングを学び始めたばかりで、クラ​​ス、取得、設定などについてまだ混乱しています。助けていただければ幸いです。

4

3 に答える 3

1

makeとstatic を作成し、前のキーワードを削除するprintAllFish必要があります。次に、for ループで、ループの反復ごとに名前と番号を取得する魚を指定する必要があります。例えば:getFishNumOffishListthisgetFishNumOf

for(Fish f : fishList)
    String a = f.getName();
    int b = f.getNumber();
    System.out.println("The Fish " + a + " is number " + b );
}
于 2013-10-22T06:46:47.640 に答える
0

初期化されたオブジェクト メソッドを呼び出す必要があります。Fish.printAllFish() ではなく、f1.printAllFish()、f2.printAllFish() または m.printAllFish()

FishContainer という名前の別のクラスを使用して、Fish オブジェクトの List オブジェクトを持ち、Fish オブジェクトを初期化するときに、それを FishContainer の list プロパティに追加し、コンテナ クラスから printAllFish() を呼び出すことをお勧めします。次のように sth を試してください。

FishContainer container = new FishContainer();
Fish f1 = new Fish("Nemo");
Fish f2 = new Fish("Dory");
f2.setNumber(2);
Fish m = new Fish("Bruce");
m.setNumber(3);

container.addFish(f1);
container.addFish(f2);
container.addFish(m);
container.printAllFish();
于 2013-10-22T06:45:34.507 に答える