我想创建一个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.
编辑: 非常感谢你! 我已修复,完善并几乎完成了我的代码。唯一的问题是我认为使用增强型循环输出当前书籍的最后一部分。每当我做的时候,我会得到奇怪的数字。 包书;
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;
}
}
答案 0 :(得分:2)
从你的代码中,有一些错误:
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));
你应该使用以下方式instaed。
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中删除元素,最好使用iterator instaed。
答案 1 :(得分:1)
您应该.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()
):< / p>
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());