2016-06-01 8 views
-2

目的は、ユーザからの入力を受け取り、コード自体に文字列 "###"を追加して、再び文字列を追加することです。目的は、 "###"を加えた後に取られる入力を印刷することです。 コードは次のとおりです。Javaのコレクションフレームワークのイテレータの作業

import java.util.*; 
public class Main 
{ 
    @SuppressWarnings("rawtypes") 
    static Iterator func(ArrayList mylist) 
    { 
     Iterator it=mylist.iterator(); 
     while(it.hasNext()) 
     { 
      Object element = it.next(); 
      if(element instanceof String) { 
       break; 
      } 
     } 
     return it; 
    } 

    @SuppressWarnings("unchecked") 
    public static void main(String []argh) 
    { 
     @SuppressWarnings("rawtypes") 
     ArrayList mylist = new ArrayList(); 
     @SuppressWarnings("resource") 
     Scanner sc=new Scanner(System.in); 
     int n=sc.nextInt(); 
     int m=sc.nextInt(); 
     for(int i=0;i<n;i++) 
     { 
      mylist.add(sc.nextInt()); 
     } 
     mylist.add("###"); 
     for(int i=0;i<m;i++) 
     { 
      mylist.add(sc.next()); 
     } 

     @SuppressWarnings("rawtypes") 
     Iterator it=func(mylist); 
     while(it.hasNext()) 
     { 
      Object element = it.next(); 
      System.out.println((String)element); 
     } 
    } 
} 

入力は次のとおりです。

2 2 
42 
10 
hello 
java 

出力は次のとおりです。

hello 
java 

私の質問はどのようにのみハローとJavaですプリントされているwhileループは文字列 "###"(コードで追加した)の最初の出会いで壊れます。

誰かがこれを説明できますか?上記のコードで

答えて

1
Object element = it.next(); 
if(element instanceof String) { 
    break; 
} 

、それは最初Stringelementを取得すると同時に、イテレータは、次に行くと最初String要素をスキップします。

したがって、最初のString型要素であるため、 "###"は無視されます。

+0

だって!ありがとう、トン! –

関連する問題