我在Hackerrank中解决了这个问题。如何在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 :(得分:1)
此代码将String
个实例后跟ArrayList
个实例添加到同一func
。
虽然您没有这么说,但Iterator
的目标似乎是返回指向&#34后面的第一个String
元素的func
;# ##&#34;元件。因此ArrayList
应该遍历String
的元素,直到遇到String
实例,这将是&#34; ###&#34; static Iterator func(ArrayList mylist)
{
Iterator it=mylist.iterator();
while(it.hasNext())
{
Object element = it.next();
if(element instanceof String)
break;
}
return it;
}
。
listWithObjs
答案 1 :(得分:1)
运营商的例子 - 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);
}
}
}
}
答案 2 :(得分:1)
if(element instanceof String){
....... } 这应该会给你预期的输出。