这是我的方法:
public static ArrayList collectSchedule(ArrayList schedule, ArrayList list, int counter)
{
((ArrayList) list.get(counter)).add(schedule);
System.out.println(list);
return list;
}
public static ArrayList getClassInfo(int count)
{
Scanner stdIn = new Scanner (System.in);
String userInput;
System.out.print("Enter the name of class #" + count + " : ");
userInput = stdIn.nextLine();
ArrayList x = getClassTime();
x.add(0, userInput);
x.add(1, getClassLength());
x.add(2, getDayOfTheWeek());
return x;
}
因此,我从getClassInfo(这是一个ArrayList)中获取值"x",并将其与一个数字(我想要它的位置的索引)和另一个ArrayList(我们称之为"schedule")一起输入到方法collectSchedule中。我将"x"(ArrayList)添加到ArrayList的"schedule"中。如果我打印出"x",它将显示"时间表"的所有值。(注意:我在计划中添加了多个不同的"x"实例!因此,如果我在"计划"中添加 3 个不同的"x",它将分别将它们全部打印出来([x, x, x][x, x, x][x, x, x])。我无法从"计划"中仅获取"x"的单个值。
我以为这段代码会起作用,但它在编译时给了我一个错误。
public static void creation(ArrayList list)
{
System.out.println((schedule.get(0)).x().get(1));
}
谁能帮助我哪里出错了?我读过一些关于使用对象的东西?但不知道怎么做!
谢谢!
如果您开始使用泛型,您会发现使用集合要容易得多,即 List<List<String>> myList
. 此外,为什么不创建一些存储类型化值的实际类,而不是依赖于索引列表呢?
撇开这一点不谈....
System.out.println((schedule.get(0)).x().get(1));
如果调度的类型是 ArrayList,则 schedule.get(0) 将返回 Object 类型的内容,除非你执行显式强制转换。 由于 Object 没有方法 x(),这将生成错误。 您通常可以通过在一行上不包含太多链式函数调用来缩小此内容的范围。 这样做很难分辨给定错误指的是什么。
如果计划被声明为List<List<String>>
甚至List<List<Object>>
那么您将能够执行以下操作:
List<String> classInfo = schedule.get(0);
String classLength = classInfo.get(1);
System.out.println(classLength);
我认为这就是你真正的目标