[英]What am I doing wrong in this ArrayList?
我想用标题和页数的实例字段创建一个Book类。
然后,我想完成14个任务。 我不会列出所有内容,但包括添加书籍,然后替换书籍,然后添加更多书籍。
The Tasks:
1. Add (book 1 - 350 pages)
2.Add (book 2 - 72 pages)
3.Replace Book 2 with (book 3 - 220 pages)
4.Add (book 4 - 120pages)
5.Add (book 5 - 90 pages at index position 1)
6.Add (Book 6 - 120 pages)
7. Add (book 7 - 170 pages)
8. Add(Book 8 - 400 pages)
9. Output the title of the book at index position 3
10. Output the size of the ArrayList.
11. Remove all books that contain 120 pages.
12. Find total num of pages in remaining books in the ArrayList.
12. Output the total number of pages in the remaining books in the ArrayList.
14. Using and enhanced for loop, ouput the current books in the ArrayLIst.
编辑:非常感谢! 我已经修复,完善并几乎完成了我的代码。 唯一的问题是我想使用增强的for循环输出当前书籍的最后一部分。 每当我这样做时,我都会得到奇怪的数字。 包装书;
import java.util.ArrayList;
public class Book {
private String title;
private int pages;
public static void main(String[] args) {
ArrayList<Book> booklib = new ArrayList<Book>();
booklib.add(new Book("Book 1", 350));
booklib.add(new Book("Book 2", 72));
booklib.set(1, new Book("Book3", 220));
booklib.add(new Book("Book 4", 120));
booklib.add(1, new Book("Book 5", 90));
booklib.add(new Book("Book 6", 120));
booklib.add(new Book("Book 7", 170));
booklib.add(new Book("Book 8", 400));
System.out.println(booklib.get(3).gettitle());
System.out.println(booklib.size());
for (int i = 0; i < booklib.size(); i++)
if (booklib.get(i).getpages() == 120)
booklib.remove(i);
int sum = 0;
for (int i = 0; i < booklib.size(); i++) {
sum = sum + booklib.get(i).getpages();
}
System.out.println(sum);
for (Book books : booklib)
System.out.println(books);
}
public Book(String n, int p) {
title = n;
pages = p;
}
public int getpages() {
return pages;
}
public String gettitle() {
return title;
}
}
从您的代码中,有一些错误:
1您声明了一个名为booklib的ArrayList,其中存储了Book对象。
ArrayList<Book> booklib = new ArrayList<Book>();
您无法添加像这样的书:
booklib.add("Book 1", 350);
booklib.add("Book 2", 72);
您应该使用以下方式添加图书
booklib.add(new Book("Book 1", 350));
booklib.add(new Book("Book 2", 72));
2如果您想打印一本书的标题
您不能使用:
System.out.println(booklib.gettitle(3));
您应该使用以下方式安装。
System.out.println(booklib.get(0).gettitle());//Populate the first book's title
3关于for循环及其内部的if条件。
更改
for(int i=0; i<booklib.size; i++)
if(booklib[i] == 120)
至
for(int i=0; i<booklib.size(); i++)
if(booklib.get(i).getpages() == 120)
如果从List中删除元素,则最好使用instaed迭代器。
您应该.add(new Book("Book 1", 350));
因为ArrayList
具有Book
类型参数。
ArrayList<Book> booklib = new ArrayList<Book>();
booklib.add(new Book("Book 1", 350));
booklib.add(new Book("Book 2", 72));
要获取ArrayList
的大小,请使用size()
而不是size
for(int i=0; i<booklib.size; i++)
// instead use the code below
for(int i = 0; i < booklib.size(); i++)
同样在for循环中,如果您希望在找到一个数字后中断循环,只需执行此操作(您不需要else
,也需要getPages()
):
for(int i=0; i<booklib.size; i++)
if(booklib[i].getPages() == 120) {
booklib.remove(i);
break;
}
}
另外,您应该将main
方法封装如下
public static void main(String[] args)
{
ArrayList<Book> booklib = new ArrayList<Book>();
booklib.add(new Book("Book 1", 350));
booklib.add(new Book("Book 2", 72));
System.out.println(booklib.gettitle(3));
System.out.println(booklib.size());
for(int i=0; i<booklib.size; i++) { // You should have brakets for loops that
if(booklib[i] == 120) // have multiple statements. This version
booklib.remove(i); // only has one, but your original code
// had multiple statements
}
}
您当前拥有一个Book
构造,并在main
方法内部获取方法。 那不是不
我注意到的最后一件事, gettitles()
不带参数。 您目前有这个
System.out.println(booklib.gettitle(3));
// Should be something like this
System.out.println(booklib.get(0).gettitle());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.