2

Iteratorのコンストラクターを構築するのではなく、「foreach」タイプの「for」ループを使用してリストを反復処理できるリストのリストを作成する割り当てが与えられました。問題は、以下のコードを実行すると、「配列またはjava.lang.Iterableのインスタンスに対してのみ反復できる」というエラーメッセージが表示されることです。コードは次のとおりです。

public static void main(String[] args) {
    GList<InnerList> list = new GList<InnerList>(); 
    GList<InnerList> numList = new GList<InnerList>();
    InnerList lst = new InnerList ();
    Scanner sc = new Scanner(System.in);
    String answer;      
    while (true){
        System.out.println ("Do you want to create a list (y/n)? ");
        answer = sc.next();
        if (answer.equals("y")){
            System.out.println("Enter the name of the list: ");
            answer = sc.next();
            lst.setName(answer);
            if (list.isEmpty()== true){
                list.insertFirstItem(lst);
            }
            else {
                list.insertNext(lst);
            }           
        }               
        while (true){
            System.out.println("Do you want to enter a number (y/n)?");
            answer = sc.next();
            if (answer.equals("y")){
                System.out.println("Enter Number: ");
                answer = sc.next();
                try {
                    int num1 = Integer.parseInt(answer);
                    lst.setInner(num1);
                    if (list.isEmpty() == true){
                        list.insertFirstItem(lst);  
                    }
                    else {
                        list.insertNext(lst);
                    }                       
                }
                catch (NumberFormatException e){
                    System.out.println("You must enter an number! " + e);
                    sc.close();
                }                       
            }
            return;
        }       
    }
    for (GList<InnerList> ilName : list){ //here are my error msgs. I also tried replacing GList<InnerList> with 'InnerList' and String. 
        for(GList<InnerList> ilInts : list){
            System.out.println(ilName);
            System.out.println(ilInts);
        }
    }       
}   

コレクションを反復可能にする必要があるのに、GListがjava.lang.iterableのインスタンスと見なされない理由を誰かが理解するのを手伝ってもらえますか?

ありがとうございました。

4

2 に答える 2

9

java.lang.Iterableインターフェイスを実装していないため、のインスタンスとは見なされませんjava.lang.Iterable。それと同じくらい簡単です。その宣言をに変更します

public class GList<T> implements Iterable<T>

そして、foreachループを使用することができます。ただし、listはのインスタンスでありGList<InnerList>、にはのGList<InnerList>インスタンスが含まれてInnerListいるため(少なくとも、そうだと思います)、ループは次のようになります。

for (InnerList innerList : list) {
    ...
}
于 2013-02-23T17:03:48.523 に答える
-2

これは構文エラーであり、正しい構文は ,

for(InnerList ilName : GList) {
   for(InnerList ilInts : GList) {
     System.out.println(ilName);
     System.out.println(ilInts);
    }
}  

お役に立てれば

于 2013-02-23T17:19:00.343 に答える