0

非常に単純なプログラムを作成しようとしています。Textクラスを呼び出して、文字列、具体的には 1 文字を単純に出力したいと考えています。次に、Window という 2 番目のクラスで、そのクラスの ArrayList を作成し、リストを繰り返し処理して、Text クラスのメソッドを呼び出して文字列を出力します。しかし、それは何も印刷しません。

私は何を間違っていますか?

public class Text {

    private String a;

    public void printA() {
        a = "a";
        System.out.print(a);
    }

}

そして他のクラス..

import java.util.ArrayList;

public class Window {

    private ArrayList<Text> string = new ArrayList<Text>(5);

    public Window() {
        addText();
    }

    public void iterate() {
        for (int i = 0; i < string.size() - 1; i++) {
            string.get(i).printA();
        }
    }

    public void addText() {
        for (int i = 0; i <string.size() - 1; i++) {
            string.add(new Text());
        }
    }

    public static void main(String[] args) {
        Window wind = new Window();
        wind.iterate();
    }

}
4

6 に答える 6

2
for(int i = 0; i <string.size()-1;i++){
    string.add(new Text());

}

最初は arraylist は空なので、string.size() == 0 forlus は実行されず、次のように変更します

public void addText(){
     string.add(new Text())
}

またはさらに良い

public void addText(Text t){
     string.add(t)
}

そうすれば、さまざまなコンストラクターで作成された Text-object を追加できます

于 2013-07-23T19:59:09.917 に答える
0

問題はこの方法です。

public void addText(){
        for(int i = 0; i <string.size()-1;i++){
            string.add(new Text());

        }
    }

これは何も追加しません。string.size()は 0 なので。

に変更する必要があるかもしれません

public void addText(int size){
    for(int i = 0; i <size-1;i++){
        string.add(new Text());

    }
}

Ps: new Arraylist<Text>(5)実際には、初期容量= 5 (サイズではない) の空のリストを作成します。ここで見る

于 2013-07-23T19:59:15.213 に答える
0

new ArrayList<Text>(5); 

5 つの要素の配列があるという意味ではありません。これは、要素を格納するための内部配列の初期容量にすぎないことを意味します。このため、初期化コード:

public void addText(){
    for(int i = 0; i <string.size()-1;i++){
        string.add(new Text());

    }
}

string.size()= 0のリストには要素がありません。

代わりにこれを使用してください (5 つの要素を追加したい場合):

public void addText(){
    for(int i = 0; i < 5;i++){
        string.add(new Text());

    }
}

さらに要素を追加しても問題はありません (初期容量が「5」しかなかったとしても)。ドキュメントから「要素がArrayListに追加されると、その容量は自動的に増加します。」

于 2013-07-23T20:06:50.917 に答える