0

チュートリアルを読んで Java を練習していると、ある問題に遭遇しました。String ArrayList を作成し、それに文字列を追加しました。ただし、このarrayListにさらに文字列を追加できるメソッドと、このarrayListを表示できる別のメソッドが必要です。以下は、この問題を解決するための私の試みです。私のコードは空の配列リストのみを出力します

class apples {
    public static void main(String[] args) {
        viewArrayList(); //prints a empty arraylist
    }

    public static void addString() {
        ArrayList<String> destinationArray = new ArrayList<String>();
        destinationArray.add("example1");
        destinationArray.add("example2");
    }

    static ArrayList GetArrayList() {
        ArrayList<String> destinationArray = new ArrayList<String>();

        return destinationArray;
    }

    public static void viewArrayList() {
        System.out.println(GetArrayList());
    }
}
4

8 に答える 8

2

変数destinationArrayはメソッドで宣言されていaddString()ます。これは、オブジェクトの外側のこのメソッド内にのみ存在し、他のメソッドではアクセスできないことを意味します。それを行うには、次のようなクラス変数として宣言する必要があります。

class apples{
ArrayList<String> destinationArray = new ArrayList<String>();
public static void main(String[] args) 

プログラムが実行されると、実際には main メソッドが実行されます。その結果、メソッドを実行したい場合addString()は、main 関数で呼び出す必要があります。次のようになります。

public static void main(String[] args) 
{
    this.addString();
    this.viewArrayList(); //prints a empty arraylist
}
于 2013-03-26T17:35:49.773 に答える
2

addString() を getArrayList() に追加するのを忘れていませんか?

于 2013-03-26T17:34:08.400 に答える
2

a のオブジェクトを作成し、ArrayListさまざまなメソッドへの参照を渡します。例ArrayListでは、メイン クラスでオブジェクトを作成し、それをaddString&displayメソッドに渡します。

public static void main(String[] args){
    List<String> destinationArray = new ArrayList<String>();
    viewArrayList(destinationArray); 
    displayArrayList(destinationArray);//prints a empty arraylist
}
public static void addString(List destinationArray ){   
    destinationArray.add("example1");
    destinationArray.add("example2");
}
...
于 2013-03-26T17:31:57.057 に答える
0

1 つの問題は、メソッドごとに異なる配列リストを使用することです。キーワードを使用するたびにnew、新しい (そして空の) リストを作成しています。

クラスの一番上に ArrayList を一度作成します...

private ArrayList<String> myList = new ArrayList<String>();

次に、新しい値を割り当てずに、他のすべてのメソッドで myList を参照します。

public ArrayList<String> getArrayList() {
  return myList;
}

public void addSomeStrings() {
  myList.add("Some String");
  myList.add("Some Other String");
}

恐れずに Java チュートリアルを進めてください。これは基本的な概念であり、基礎を固めないとかなりイライラする可能性があります。

于 2013-03-26T17:37:32.513 に答える
0

私はこのようなことをします:

class apples
{
  private ArrayList<String> array = new ArrayList<String>();

  public void addString(String addString)
  {   
    this.array.add(addString);
  }


  public ArrayList<String> GetArrayList()
  {
    return array;
  }
}
于 2013-03-26T17:34:01.210 に答える
0

ここで問題になるのは、配列オブジェクトのスコープです。1 つの配列に文字列を追加し、別の配列を印刷しようとしています。addString() の静的ブロックと配列宣言を削除します。次のようにクラス定義の横に配列を宣言します。

class apples { ArrayList destinationArray = new ArrayList(); ... ... ...

それはうまくいくはずです。

于 2013-03-26T17:48:59.560 に答える
0

次のプログラムをコンパイルして実行します。

import java.util.ArrayList;

class Apples {
    static ArrayList<String> destinationArray = new ArrayList<String>();
    public static void main(String[] args) {
        System.out.print("First time");
        viewArrayList();
        addString("Example1");
        addString("Example2");
        addString("Example3");

        System.out.print("Second time");
        viewArrayList();
        addString("Example4");
        addString("Example5");
        System.out.print("Third time");
        viewArrayList();
    }

    public static void addString(String example) {
        destinationArray.add(example);
    }

    static ArrayList getArrayList() {
        return destinationArray;
    }

    public static void viewArrayList() {
        System.out.println(getArrayList());
    }
}
于 2013-03-26T17:45:25.913 に答える