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);

在上面的代码中,您正在创建一个 newArrayList al并将其传递给dispList()不会迭代的方法,因为al没有元素

我猜您想遍历您在其中创建的元素ArrayListDemo。所以你可能想编写dispList()如下方法,现在将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

您的代码运行如下: -

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

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

  • 类构造函数从用户输入中读取数据并添加ArrayList a1br.readLine()

  • e.dispList(al);迭代 ArrayList 实例a1并打印其输出。

于 2013-09-15T17:48:03.983 回答
0

不清楚你到底在问什么,但我注意到你的声明(复数)有问题al:你有一个在你的中ArrayList命名,而另一个属于. 您正在将值读入第二个值,然后打印出(空的)第一个值。almainArrayListDemo

你真的不需要一个带有构造函数的单独类。您可以只有两种static方法readList(List<String> al)dispList(List<String> al). 如果您确实想单独开设一个班级,请选择一个存储位置List(在班级内main或班级内)。

需要注意的是,尽可能对变量和方法参数使用最通用的类​​型通常是一个好主意。您正在声明一个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 回答