0

こんにちは、私はJavaを学んでいる初心者です。私は ArrayList n を研究していましたが、たとえば {CODE1} などのこのコードに出くわしました。同じコードを使用したいのですが、ArrayListDemo コンストラクターを追加して、displayList や removeElement などのメソッドを作成します。そのような例を見つけようとしましたが、理解できませんでした。

これは私が試したコードです {CODE2} 私の修正でどこが間違っているのか教えてください。

*** CODE1 {コード例}** * *

import java.util.ArrayList;

public class AraryListDemo {

  public static void main(String[] args) {

    ArrayList al = new ArrayList();
    System.out.print("Initial size of al :  " + al.size());
    System.out.print("\n");

    //add.elements to the array list
    al.add("C");
    al.add("A");
    al.add("E");
    al.add("B");
    al.add("D");
    al.add("F");
    al.add(1,"A2");//inserts objects "A2" into array at index 1

    System.out.print("size of al after additions " + al.size());
    System.out.print("\n");

    //display the array list
    System.out.print("contents of al: " +  al );
    System.out.print("\n");

    //Remove elements from the array list
    al.remove("F");
    al.remove(2);

    System.out.print("size of after deletions : " + al.size());
    System.out.print("\n");
    System.out.print("contents of al:" + al);

  }

}

** * ** * **コード 2 {私の変更}** * ** * ** * ****

class ArrayListDemo

{
ArrayList<String> al;//variable declared




ArrayListDemo() throws IOException//try constructor for this
{
    al = new ArrayList<String>();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("\n Enter Student Names");
    for(int i=0;i<=5;i++)// will dispaly 
    {
        al.add(br.readLine());
    }



}
void dispList(ArrayList <String> al)
{
    System.out.println("\n Display Student Names");
    for(String str : al)
    {
        System.out.println("\t Name :  "+str+"\n");
    }
}
}
class DisplayArrayList
{
public static void main(String []args) throws IOException
{

    ArrayList <String> al = new ArrayList <String>();
    ArrayListDemo e = new ArrayListDemo();
    e.dispList(al);

}
}
4

4 に答える 4

2
ArrayList <String> al = new ArrayList <String>();
ArrayListDemo e = new ArrayListDemo();
e.dispList(al);

上記のコードでは、 new を作成しArrayList al、同じものを method に渡していますが、 にはelementsがないdispList()ため、反復しません。al

内で作成した要素を繰り返し処理したかったと思いますArrayListDemodispList()したがって、以下のようにメソッドを記述したい場合があります。これはArrayList、クラス内で定義されたものを使用します

void dispList() //method parameter "al" is removed now and, al is the al of ArrayListDemo
{
    System.out.println("\n Display Student Names");
    for(String str : al) //here al refers to ArrayList defined within the class
    {
        System.out.println("\t Name :  "+str+"\n");
    }
}
于 2013-09-15T17:38:18.323 に答える
0

正確に何を求めているのかは明確ではありませんが、 の宣言 (複数形) に問題があることに注意しalてください。値を 2 番目の値に読み込んでから、(空の) 最初の値を出力します。ArrayListalmainArrayListDemo

ここでは、コンストラクターを持つ別のクラスは本当に必要ありません。staticと の 2 つのメソッドreadList(List<String> al)を持つことができますdispList(List<String> al)。本当に別のクラスが必要な場合は、List(クラス内またはクラス内のいずれかでmain) を格納する場所を 1 つ選択します。

注意として、一般的には、変数とメソッド パラメーターに可能な限り一般的な型を使用することをお勧めします。を宣言していますがArrayList、これは問題ありませんが、変数とパラメーターをLists にすると、コードはより柔軟になります。

于 2013-09-15T17:38:28.803 に答える
0

あなたの努力を働かせるための最も簡単な (しかし推奨されない) 解決策はdisplist()、コンストラクターによって埋められたメソッドに配列を渡すことです。

public static void main(String []args) throws IOException
{
    ArrayListDemo e = new ArrayListDemo();
    e.dispList(e.al);
}
于 2013-09-15T17:45:23.937 に答える
0

あなたのコードは次のように実行されます:-

  • ArrayList <String> al = new ArrayList <String>(); // Initialise an ArrayList of type string

  • ArrayListDemo e = new ArrayListDemo(); // Initialised class ArrayListDemo

  • クラス コンストラクターは、ユーザー入力からデータを読み取り、ArrayList a1byに追加しますbr.readLine()

  • e.dispList(al);ArrayList インスタンスa1を反復し、その出力を出力します。

于 2013-09-15T17:48:03.983 に答える