public class ContainerTest
{
public static void main(String[] args)throws Exception
{
Collection c=new ArrayList();
c.add(new String("hello"));
c.add(new Integer("23"));
c.add(new Integer("31"));
c.add(new String("USTC"));
c.add(new String("sdf"));
Iterator i=c.iterator();
while(i.hasNext())
{
String s;
Integer i1;
if(i.next() instanceof String)
{
s=(String)i.next();
System.out.println("1");
}
else
if(i.next() instanceof Integer)
{ i1=(Integer)i.next();System.out.println(10);}
}
}
}我的本意是对容器中相应的类型数据逐个输出,但是出现了转换错误,请教各位,麻烦帮帮忙啊!我还是一个初学者!
{
public static void main(String[] args)throws Exception
{
Collection c=new ArrayList();
c.add(new String("hello"));
c.add(new Integer("23"));
c.add(new Integer("31"));
c.add(new String("USTC"));
c.add(new String("sdf"));
Iterator i=c.iterator();
while(i.hasNext())
{
String s;
Integer i1;
if(i.next() instanceof String)
{
s=(String)i.next();
System.out.println("1");
}
else
if(i.next() instanceof Integer)
{ i1=(Integer)i.next();System.out.println(10);}
}
}
}我的本意是对容器中相应的类型数据逐个输出,但是出现了转换错误,请教各位,麻烦帮帮忙啊!我还是一个初学者!
解决方案 »
- 不知到怎么办了 大家给我建议吧。兴趣还在 信心丢了
- ScheduledThreadPoolExecutor如何重置计时.标题要长..........................................
- 第一次看TIJ,请教一些杂乱的问题
- 实现一个具有百度文库文档转换功能的工具类
- Spring声明式事务不能回滚, 高手帮忙!
- JTable 连接数据库,谁能给讲一下,正在学习
- 如何设置g.drawLine画的线为点画线(dotline)??
- 请问哪里有thinking in java v2的课后练习答案下载
- 字符串str1赋值给字符串str2,怎么赋的是句柄不是串值?问题是赋完以后我要将str1清空啊!搞不懂,呜呜呜~~~
- 为什么输出结果是这个哪????
- java读取sql server中image字段的问题。
- java的ftp关闭程序为什么停住了
import java.util.Collection;
import java.util.Iterator;public class ContainerTest {
public static void main(String[] args) throws Exception {
Collection c = new ArrayList();
c.add(new String("hello"));
c.add(new Integer("23"));
c.add(new Integer("31"));
c.add(new String("USTC"));
c.add(new String("sdf"));
Iterator i = c.iterator();
while (i.hasNext()) {
String s;
Integer i1;
Object o=i.next();
if (o instanceof String) {
s = (String)o;
System.out.println(s);
} else if (o instanceof Integer) {
i1 = (Integer) o;
System.out.println(i1);
}
}
}
}
if(i.next() instanceof String)
{
s=(String)i.next();
System.out.println("1");
}
else
if(i.next() instanceof Integer)
{ i1=(Integer)i.next();System.out.println(10);}
}
这里都调用了4次在倒数第3个元素的时候会出现 OutOfA 角标越界的异常。
i.next取出的是Object,系统无法判断是不是String或者Integer的示例,所以才会发生转换错误
其实是这样的,楼主你的程序第一个数据new String("hello"),if(i.next() instanceof String)此时为真
进入语句块内,而 s=(String)i.next(); 此时的i的指针指向了下一个数据,就是new Integer("23")
你有要他强制转换成String,所以才会报转换错误,不知道我说清楚了没有
这样才可以转换
import java.util.*;public class ContainerTest {
public static void main(String[] args) throws Exception {
Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("23");
c.add("31");
c.add("USTC");
c.add("sdf");
Iterator i = c.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
只看结果,不看过程,OVER