public class Obras extends Books implements ILibrary {
protected ArrayList<Obras> ListObra = new ArrayList<Obras>();
protected String typeObra;
protected String statusBorrow;
protected int ISBNuser;
Scanner userInput = new Scanner(System.in);
Scanner tipoInput = new Scanner(System.in);
public void createnewObra()
{
System.out.println("Insert the type of the new item: [Book, article...");
typeObra = tipoInput.nextLine();
super.createnewObra();
}
....
public void addObra() {
Obras newObra = new Obras();
newObra.createnewObra();
ListObra.add(newObra);
System.out.println("> Uma nova obra foi adicionada com sucesso!\n");
....
public void BorrowObra() {
System.out.println("> Choose a book from the list: ");
showListObras();
System.out.println("\n\n> Please choose one of the items from the above list by typing it's ISBN value: ");
ISBNuser = opcaoInput.nextInt();.
if(ListObra.get(ISBN).equals(ISBNuser))
{
System.out.println("> You successfully borrowed this book");
statusBorrow = false;
}
答案 0 :(得分:1)
要从ArrayList
获取一个int,您的ArrayList
必须按照以下方式定义:
ArrayList<Integer> arrayListOfIntegers = new ArrayList<Integer>();
或
List<Integer> listOfIntegers = new ArrayList<Integer>();
您的列表似乎包含类Obras
的对象。
此外,当您调用ListObra.get(ISBN)
时,此方法旨在返回列表中指定索引处的对象 - 我怀疑ISBN不是列表中的索引,而是书籍的ISBN?
另外,请注意Java命名标准 - 变量以小写字母开头,方法使用驼峰大小写(例如createNewObra()
)。它使其他开发人员更容易理解。
答案 1 :(得分:0)
ListObra.get(ISBN).equals(ISBNuser)
为:
Obras o = ListObra.get(ISBN);
if (o != null && o.getISBNuser() == ISBNuser) {
System.out.println("> You successfully borrowed this book");
statusBorrow = false;
}
因为你只获得一个对象Obras
而你Override
中没有equal
Obras
的功能,所以你需要获得Integer ISBUser
和等于用户输入。
另一种方式:
Override equal
:
public class Obras extends Books implements ILibrary {
@Override
public boolean equals(Object e) {
Integer i = (Integer)e;
if (this.ISBUser == i) return true;
return false;
}
}
所以现在可以使用equals
函数进行比较:
ListObra.get(ISBN).equals(ISBNuser)