没截全,不太看得出来,方法没啥问题,可能是main方法调用的时候出的问题,可以检查一下main方法调用时有没有coursesToSelcet这个数列,或者是名字有没有打错
把if (str==1) { ListText listText = new ListText(); 这里的ListText listText = new ListText();语句提到while上方, 否则每次都会重新new一个新对象把原来储存了数据的对象覆盖了
数组的长度用length方法,集合没有length方法,只有size方法。对象不同所用的方法当然不同,就好像集合中的List集合可以使用三种方法遍历,而Set集合只能有两种方法,对象不同,策略就不一定
搜索
复制
最后的点是中文字符吧
问题一:
接口不可以通过“接口类 对象名 = new 接口实现类”来创建对象,再使用对象名来使用方法。
接口是要被实现的,它是抽象类,不可以被实例化(创建对象)。
有代码“Iterator it = coursesToSelect.irerator()”。开头的“Iterator”声明了对象类型为Iterator。但是这不是说把Iterator实例化(实例化就是创建对象)。只是规定了对象的类型。你应该把它理解为调用了一个返回值为对象的方法,把他传给“it”这个对象名,并且声明对象为Iterator类型。
PS: iterator()方法是java.lang.Iterable接口,被Collection继承。所以Collection里面有iterator这个方法,隐藏ArrayList里面也就有这份方法。所以就可以用ArrayList的对象名“coursesToSelect”来调用这个方法。
问题二:
构造器是初始化块也是构造方法,是同一个东西的不同名称,只会执行一次,在创建对象的时候执行。“返回一个构造方法”我没听过这种说法,方法只能返回各种数据类型和对象。
构造器本身就是方法块,他能调用方法。构造器只能在初始化的时候执行一次,有时候你没有写,那就好自动给你一个默认的,所有实例化的对象都有构造器。
你问构造器可不可以写入方法。方法是可以被调用的,构造器无法调用。但是它可也能执行方法的功能,比如说赋值。你可以把方法的功能写在构造器里面,这些功能在初始化的时候自动执行。
平时基本都是用fori循环,因为效率最高。再来比较foreach和iterator循环,foreach循环的优势在于遍历数据时,可以更方便的进行业务处理,所以数据统计优先用foreach,但是如果涉及到删除操作,iterator更保险
foreach中的类型修饰的是枚举的元素course,而非coursesToSelect。course的类型应该是构造List时的泛型参数,如果没有传入泛型参数,那默认就是Object
你发的太长了,后面的看不到
我猜你可能在问这个https://www.iteye.com/problems/87073
是不是没有创建ClassToSelect接口
97行的代码,for循环只有循环方法,没有循环体符号{}
for(int i = 0;i<size;i++){ }
*循环体不是以 ; 结尾,他一定需要一个循环体
我知道错哪了
我知道错哪了
这里不需要强制类型转换,迭代器本来就是依赖Course存在的。
?智障还来学编程吗
for(Object obj:coursesToSelect)后面多了一个;
主函数放错位置 下面多了个中括号 向下移动一下就好了
解压压缩包即可
你看下你的导包是不是正确的,类型不匹配
简单的说就是 向list集合里添加了一个新元素占用的 2的位置 你可以把它当成是排队 你总不能把第二个人踩死把
不好意思,自己发完看截图看出来了,大括号的位置不对,这行细心真的重要 [笑哭笑哭]
ListTest.java:59 list没有初始化
不需要
可以
不是实例化,是引用,从集合中取出一个对象需要一个引用接收
引入的包错了,iterator在多个包中都有时实现,你引入的是HTMLDocument.Iterator,正确的应该是:java.util.Iterator
APL是个离线文档,可以去官网下载,
接口写出来必须要实现,List接口不能实例化,Arrayslist是list的实现类,在构造器中已经实现了list接口的方法,就可以用啦。
少个{}。while(it.hasNext()){
}
public void testGet(){ System.out.println("有如下课程可选"); for(int i =0 ;i<coursesToSelect.size();i++){ Course cre = (Course)coursesToSelect.get(i); System.out.println("课程"+cre.id+":"+cre.name); } } //你的for循环没定义变量i的数据类型
去掉new试试吧。或者点下红色的小灯泡,看下提示。
因为Course类是我们自己创建的,在Java的类库中并没有Course这个类,放进List的元素默认是Object类型的,要对其进行强制类型转换才能得到我们所需要的Course类型,等号左边是Course类型,那么右边也要是Course类型才不会报错。