2016-05-15 48 views
-2

我正在解決Hackerrank中的這個問題。如何在Java中使用instanceof運算符來成功編譯代碼?如何在這裏使用java的instanceof運算符?

鏈接:https://www.hackerrank.com/challenges/java-iterator

的不完整代碼:

import java.util.*; 
public class Main 
{ 
static Iterator func(ArrayList mylist) 
{ 
    Iterator it=mylist.iterator(); 
    while(it.hasNext()) 
    { 
    Object element = it.next(); 
    if(~~Complete this line~~)//Hints: use instanceof operator 
     break; 
    } 
    return it; 

} 

public static void main(String []argh) 
{ 
    ArrayList mylist = new ArrayList(); 
    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()); 
    } 


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

} 
} 

即使我把它用做if(element == "###"),請指導我如何在那個地方使用instanceof操作。

編輯:該線程無法提供有關如何使用instanceof運算符來檢查ArrayList中的「###」之類的特殊字符組的實例的答案。請幫助我理解。對不起,如果我在這裏違反任何規則。

+0

對不起,但我已經通過該線程較早,無法理解如何在我的問題中使用instanceof運算符。你能幫忙嗎? – Swaggerboy

回答

1

此代碼將Integer實例添加到實例,然後將String實例添加到相同的ArrayList

雖然你沒有這麼說,但func的目標似乎是返回Iterator,指向第一個String元素,跟在「###」元素後面。因此func應迭代ArrayList的元素,直到遇到String實例,這將是「###」String

static Iterator func(ArrayList mylist) 
{ 
    Iterator it=mylist.iterator(); 
    while(it.hasNext()) 
    { 
    Object element = it.next(); 
    if(element instanceof String) 
     break; 
    } 
    return it; 

} 
+0

賓果!這是現貨!我無法相信我忽略了那裏的細節!謝謝回答! :) – Swaggerboy

1

ex instanceof運算符 - import java.util.Enumeration; import java.util.Vector;

公共類VecReplace {

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Vector vector=new Vector(); 

     vector.add(0, 10); 
     vector.add(1, "xyz"); 
     vector.add(2, 30); 
     vector.add(3, 40); 
     System.out.println(vector); 

     vector.set(3, "abc"); 
     System.out.println(vector); 

     Enumeration e=vector.elements(); 
     while(e.hasMoreElements()) 
     { 
      Object o=e.nextElement(); 
      if(o instanceof Integer) 
      { 
       Integer i=(Integer) o; 

       System.out.println(i); 
      } 

     } 


} 

}

+0

謝謝你的寶貴意見:) – Swaggerboy

1
if(element instanceof String){ 

....... } 這應該給你預期的輸出。