嗨,我是新手,只是学习java。我正在研究ArrayList n来自这个代码,例如{CODE1}。 我想使用相同的代码,但添加一个ArrayListDemo构造函数n创建方法,如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);
}
}
的 的 ** * ** * ** CODE 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);
}
}
答案 0 :(得分:2)
ArrayList <String> al = new ArrayList <String>();
ArrayListDemo e = new ArrayListDemo();
e.dispList(al);
在上面的代码中,您要创建一个新的ArrayList
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");
}
}
答案 1 :(得分:0)
目前尚不清楚你究竟在问什么,但我注意到你的al
声明(复数)有问题:你的ArrayList
名为al
main
,您还有另一个属于ArrayListDemo
的人。您正在读取第二个值,然后打印出(空)第一个值。
这里你真的不需要一个带构造函数的单独类。您可以只有两个static
方法readList(List<String> al)
和dispList(List<String> al)
。如果您确实想要一个单独的课程,请选择一个地方来存储List
(在main
或课程中)。
作为一个注释,通常最好使用最常用的变量和方法参数类型。您声明的是ArrayList
,这很好,但如果您创建变量和参数List
,则代码更灵活。
答案 2 :(得分:0)
使您努力工作的最简单(但不是首选)解决方案是将数组传递给构造函数填充的displist()
方法。
public static void main(String []args) throws IOException
{
ArrayListDemo e = new ArrayListDemo();
e.dispList(e.al);
}
答案 3 :(得分:0)
您的代码运行如下: -
ArrayList <String> al = new ArrayList <String>(); // Initialise an ArrayList of type string
ArrayListDemo e = new ArrayListDemo(); // Initialised class ArrayListDemo
类构造函数从用户输入中读取数据,并按ArrayList
a1
br.readLine()
e.dispList(al);
迭代ArrayList实例a1
并打印其输出。