2016-04-03 10 views
0

だから、私はドライバクラスとarraylistを持っています(あなたが推測できるように)。ドライバクラスArrayListの難易度

私のarraylistは文字列でいっぱいで、私は他のクラスで作成したゲッターでアクセスしています。

「デスクトップのタイプからの静的メソッドgetMouseList()は、静的な方法でアクセスする必要があります。これを修正するにはどうすればいいですか?あなたは他のエラーを見ますか?

お手伝いいただける皆様、ありがとうございます!

クラス::

static ArrayList <String> Strings; 


public static void main(String[] args) { 
    Strings = new ArrayList <String>(); 
     Strings.add("goodbye"); 
     Strings.add("hi"); 
     Strings.add("hello"); 
} 

    public static ArrayList<String> getStrings() { 
     return Strings; 
    } 

ドライバー・クラス:それは静的なので

Desktop test4 = new Desktop(); 
System.out.println(test4.getStrings()); 

答えて

3

、それはそのクラスに属し、ないクラスインスタンスへ

は、だからここに私のコードです。したがって、あなたはクラスを使用してアクセスする必要があります:Desktop.getStrings()

UPDATE が、私は正確に何が起こっているのかを説明するためにあなたのコードの詳細を参照する必要があると思います。だから、あなたのコードが想像していることを説明しようとします。 Javaプログラムは主な方法の1つから始まることに注意してください。あなたのプログラムをどのように実行するかによって、そのうちの1つが呼び出され、他のプログラムは呼び出されません。いずれの場合においても

、一つの方法は、デスクトップに別の静的メソッドを作成し、そのメソッドにメインから初期化コードを移動する、などのために、次のようになります、そして、

public static void initializeStrings(){ 
    Strings = new ArrayList <String>(); 
    Strings.add("goodbye"); 
    Strings.add("hi"); 
    Strings.add("hello"); 
} 

、あなたがそのメソッドを呼び出していることを確認してくださいDesktop.initializeStings();を経由して、プログラムの実際のmainメソッドの開始、例えば(文字列配列にアクセスしようとする前に、

EDIT 2: OK、そう、あなたのメインは、次のようになります。

public static void main(String[] args) { 
    Desktop.initializeStrings(); 
    Driver.doSomething(); 
} 

と(Driverクラス内の)あなたのDriverの方法:

public static void doSomething() { 
    //some code 

    //strings are initialized and will get printed 
    System.out.println(Desktop.getStrings()); 
} 

あなたが前進する方法についてのヒントを与える必要があります。副作用として、このすべてがJavaのオブジェクト指向の性質を妨げています。私は、Javaのオブジェクト指向プログラミングモデルのチュートリアルをお勧めします:https://docs.oracle.com/javase/tutorial/java/index.html

+0

エラーはなくなりましたが、それでもnullを返します。助言がありますか? –

+2

これはまだ初期化されていないことを意味します。提供したコードサンプルでは、​​初期化はメインメソッドで行われます。しかし、私はあなたが実行しているコードはおそらく別の主なメソッドを使用して、例ではないので、Strings配列は決して初期化されていないと思います。 – JChrist

+0

それは理にかなっていますが、私は初心者のためにそれを行う方法は分かりません。申し訳ありませんが、私は少し余分な助けを得ることができます。私は主にarraylistに物を追加して、私の運転手でそれを呼びそそうとしています。これをどのように変更する必要がありますか? –