从ArrayList中重新并比较int值

时间:2015-04-27 01:17:17

标签: java list arraylist int compare

晚安。我试图检索并比较ArrayList中的int变量值(如果可能的话),但无论我做什么,它都无法工作。我已经尝试过像contains(),get()等方法。我的逻辑真的很糟糕,有人可以帮帮我吗?请?

    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;
        }

2 个答案:

答案 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)