A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘俊佳 中级黑马   /  2012-7-21 12:16  /  2779 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘俊佳 于 2012-7-21 21:19 编辑

package collection;
/*
add方法的参数类型是Object,以便于接受任意类型的对象
集合中存取的都是对象的引用(地址)
*/
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.text.html.HTMLDocument.Iterator;

public class ConnectionDemo {
        public static void main(String[] args)
        {
               
                method_get();
        
        }
        public static void method_get()
        {
        ArrayList al=new ArrayList();
               
                //添加元素
                al.add("java01");
                al.add("java02");
                al.add("java03");
                al.add("java04");
               
                Iterator it=al.iterator();
               
                sop(it.next());
               
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
               
        }
}
报错信息如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        Type mismatch: cannot convert from Iterator to HTMLDocument.Iterator
        The method sop(Object) in the type ConnectionDemo is not applicable for the arguments (void)

        at collection.ConnectionDemo.method_get(ConnectionDemo.java:28)
        at collection.ConnectionDemo.main(ConnectionDemo.java:15)

5 个回复

倒序浏览

/*
add方法的参数类型是Object,以便于接受任意类型的对象
集合中存取的都是对象的引用(地址)
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.text.html.HTMLDocument.Iterator;//哥们这里你导错了包名.


public class ConnectionDemo {
        public static void main(String[] args)
        {
               
                method_get();
        
        }
        public static void method_get()
        {
        ArrayList al=new ArrayList();
               
                //添加元素
                al.add("java01");
                al.add("java02");
                al.add("java03");
                al.add("java04");
               
                Iterator it=al.iterator();
                //遍历一个集合不是这样的,你这里只是打印出了第一个元素,Iterator就相当于一个指针,第一次指向的是第一个元素.
                sop(it.next());
//遍历集合应该是这样的.方式一
        Iterator it=al.iterator();
                while(it.hasNext()){
                sop(it.next());
                }
                //方式二
                for(Object o :al){
                 sop(o);
                }
               
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
               
        }
}
回复 使用道具 举报
不是import javax.swing.text.html.HTMLDocument.Iterator; 应该导import java.util.Iterator;
而且迭代器遍历应该是
Iterator it=al.iterator();
while(it.hasNext()){
    sop(it.next());
}
你这个只打印出集合中的第一个元素
回复 使用道具 举报
Type mismatch: cannot convert from Iterator to HTMLDocument.Iterator
不能装换  Iterator  HTMLDocument.Iterator 这样就可以直接判断是不是导包的时候有问题,比较容易入手
回复 使用道具 举报
李菁 发表于 2012-7-21 12:47
不是import javax.swing.text.html.HTMLDocument.Iterator; 应该导import java.util.Iterator;
而且迭代器 ...

原来是包导错了:L
回复 使用道具 举报
这里纠正一下你的迭代器使用方法:
一般是这样才不会出错:
Iterator it=al.iterator();
while(it.hasNext())
{
    String str=(String)it.next();//由于你放进去的是字符串类型,所以取得时候也转为字符串,将it.next()赋给变量可以在开发中避免一些不必要的错误,例如我这个例子:
    System.out.println(str);
}
---------------------------------------------------------华丽的分割线-------------------------------------------------------------------

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
* 练习:用集合存储自定义对象,并输出每个对象元素.并画内存图
*/
public class IteratorTest {
public static void main(String[] args) {
  ArrayList<Student> c = new ArrayList<Student>();
  
  Student s1 = new Student();
  s1.setName("欧阳锋");
  s1.setAge(88);
  
  Student s2 = new Student();
  s2.setName("郭靖");
  s2.setAge(66);
  
  Student s3 = new Student();
  s3.setName("杨过");
  s3.setAge(48);
  
  c.add(s1);
  c.add(s2);
  c.add(s3);
  
  //System.out.println(c);
  Iterator<Student> it = c.iterator();
  while(it.hasNext()){
   Student s = (Student)it.next();
   System.out.println(s.getName()+"***"+s.getAge());
//   System.out.println(((Student)it.next()).getName()+"***"+((Student)it.next()).getAge());//这种写法编译不不错,但是运行就挂了,而上面的将it.next()赋给Student对象则安全
  }
}
}
---------------------------------------------------------华丽的分割线-------------------------------------------------------------------

/*
* 自定义对象
*/
public class Student {
private String name;
private int age;
public Student() {
}
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
public int getAge() {
  return age;
}
public void setAge(int age) {
  this.age = age;
}
}



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马