2

だからここに私の方法があります:

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に入力します。ArrayListの「schedule」に「x」(ArrayList)を追加します。「x」を印刷すると、「schedule」のすべての値が表示されます。(注:スケジュールに「x」の複数の異なるインスタンスを追加します!)。したがって、「スケジュール」に3つの異なる「x」を追加すると、それらすべてが別々に出力されます([x、x、x] [x、x、x] [x、x、x])。「schedule」から「x」の値を1つだけ取得するのに問題があります。

このコードは機能すると思いましたが、コンパイル時にエラーが発生します。

public static void creation(ArrayList list)
{
    System.out.println((schedule.get(0)).x().get(1));
}

誰かが私が間違っているところを助けてくれますか?オブジェクトの使用について何か読んだことがありますか?しかし、方法がわかりません!

ありがとう!

4

1 に答える 1

3

ジェネリックを使い始めると、コレクションの操作がはるかに簡単になることがわかりますList<List<String>> myList。さらに、インデックス付きリストに依存するのではなく、型付きの値を格納する実際のクラスをいくつか作成してみませんか?

それはさておき……。

System.out.println((schedule.get(0)).x().get(1));

スケジュールのタイプが ArrayList の場合、明示的なキャストを実行しない限り、schedule.get(0) はオブジェクト タイプのものを返します。Object にはエラーを生成するメソッド x() がないためです。通常、チェーン関数呼び出しを 1 行に含めないようにすることで、この内容を自分で絞り込むことができます。そうすることで、特定のエラーが何を参照しているのかを判断することが難しくなります。

スケジュールが asList<List<String>>または even List<List<Object>>then と宣言されている場合、これを行うことができます。

List<String> classInfo = schedule.get(0);
String classLength = classInfo.get(1);
System.out.println(classLength);

あなたが実際に目指しているものだと思います

于 2012-12-02T04:44:06.877 に答える