我现在收到错误 BookCollection.java:67:错误:不兼容的类型 集合[lastElement ++] = b;
还不确定我的构造函数是否设置正确?方向是:
构造: 给定指定集合大小限制的参数,使用给定参数创建空书集。参数不应超过预设的最大尺寸200。
我是否正确初始化变量?下面的答案帮助我改变了我的代码,但是虽然我的构造函数中没有出现错误,但根据指示,我觉得它可能不正确....
我会粘贴与该问题相关的代码块。
public class BookCollection{
//data fields, need complete
private int limit = 200;
//Array of type book
private int Book[];
//actual size of collection, initialized to zero. Must never exceed limit
private int collection[];
private int lastElement;
//Constructor
public BookCollection(int l, int c[], int le,int b[]){
Book = b;
collection = c;
limit = l;
lastElement = le;
int lastElement = 0;
if(limit <= 200){
Book[] collection = new Book[limit];
} else{
throw new UnsupportedOperationException("CannotExceedLimit");
}
}
ANNDDDD我收到错误:
public void addBook(int b[], int c[]) {
Book = b;
collection = c;
if (lastElement == collection.length) {
throw new UnsupportedOperationException("CorrectionFull");
}
for (int i = 0 ; i != lastElement ; i++) {
if(b.equals(collection[i])) {
throw new UnsupportedOperationException("DuplicateBook");
}
}
collection[lastElement++] = b;
}
答案 0 :(得分:3)
您尚未在i
循环中将for
声明为整数。所以用初始化添加声明。替换此
for(i=0; i<collection.length; i++){
带
for(int i=0; i<collection.length; i++){
答案 1 :(得分:2)
本声明
BookCollection[] collection = new BookCollection[limit]; //initialize array of 200
声明本地数组。一离开构造函数就会被破坏。
留下的收藏品是这个:
private int collection[];
它由int
组成,所以当你尝试这样做时
collection[i].add(b);
编译器正确地抱怨int
没有名为add
的方法。
很有可能,甚至宣称收藏为
private Book[] collection;
并在构造函数中将其初始化为
collection = new Book[limit];
但是,不会有帮助:与集合不同,Java数组不允许您动态更改其大小,因此您需要存储已设置的collection[]
数组的最后一个元素的索引。 / p>
这导致您理解需要一个循环来查找重复项,并注意其他:定义元素int lastElement
,在构造函数中将其设置为零,并按如下方式重写addBook
方法: / p>
public void addBook(Book b) {
if (lastElement == collection.length) {
throw new UnsupportedOperationException("CorrectionFull");
}
for (int i = 0 ; i != lastElement ; i++) {
if(b.equals(collection[i])) {
throw new UnsupportedOperationException("DuplicateBook");
}
}
collection[lastElement++] = b;
}
答案 2 :(得分:0)
您没有将i
声明为int
类型变量,将其设为
for(int i=0; i<collection.length; i++){
^here
//...
}