这是我的计划。所有我想要做的就是在最后打印ArrayList并且它不会,我做错了什么我试图使用mls.ToString()但那不起作用。请告诉我我做错了什么。 PS这是家庭作业,感谢您的帮助。
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Book> mls = new ArrayList<Book>();
String userAuthor;
String userTitle;
int userYearPub;
int userPageCount;
String answer;
int numberAnswer;
int choice;
do {
Scanner in = new Scanner(System.in);
System.out.println("Please enter the author of the book.");
userAuthor = in.next();
System.out.println();
System.out.println("Please enter the title of the book.");
userTitle = in.next();
System.out.println();
System.out.println("Please enter the year the book was published.");
userYearPub = in.nextInt();
System.out.println();
System.out.println("Please enter the number of pages of the book.");
userPageCount = in.nextInt();
System.out.println();
Book usersBook = new Book(userAuthor, userTitle, userYearPub, userPageCount);
System.out.println(usersBook.ToString());
System.out.println();
do {
System.out.println("If you want to change anything press one of the following options: ");
System.out.println('1' + " Author.");
System.out.println('2' + " Title.");
System.out.println('3' + " Year it was published.");
System.out.println('4' + " Number of pages");
System.out.println('5' + " Quit");
System.out.println();
choice = in.nextInt();
if (choice == 1) {
System.out.println("Please enter the new author:");
answer = in.next();
usersBook.setAuthor(answer);
}
if (choice == 2) {
System.out.println("Please enter the new title:");
answer = in.next();
usersBook.setTitle(answer);
}
if (choice == 3) {
System.out.println("Please enter the new year:");
numberAnswer = in.nextInt();
usersBook.setYearPub(numberAnswer);
}
if (choice == 4) {
System.out.println("Please enter the new pages count:");
numberAnswer = in.nextInt();
usersBook.setPages(numberAnswer);
}
if (choice == 5) {
break;
}
System.out.println();
System.out.println("Is this correct?");
System.out.println('1' + " yes");
System.out.println('2' + " no");
choice = in.nextInt();
if (choice == 1) break;
}while (choice == 2);
mls.add(usersBook);
System.out.println(usersBook.ToString());
System.out.println();
System.out.println("Do you want to input another book?");
System.out.println("If so press 1, if not press 2.");
choice = in.nextInt();
System.out.println(mls.ToString());
} while (choice == 1);
}
}
这是Book课程。
public class Book {
private String author;
private String title;
private int yearPub;
private int pages;
public Book(String Author, String Title, int YearPub, int Pages)
{
this.author = Author;
this.title = Title;
this.yearPub = YearPub;
this.pages = Pages;
}
public String ToString()
{
return "The Author of this book is " + author +
"\nThe title of this book is " + title +
"\nThe year published is " + yearPub +
"\nThe number of pages is " + pages;
}
public void setAuthor(String newSring)
{
author = newSring;
}
public void setTitle(String newString)
{
title = newString;
}
public void setYearPub(int newValue)
{
yearPub = newValue;
}
public void setPages(int newValue)
{
pages = newValue;
}
}
答案 0 :(得分:0)
mls
不是Book
。这是一个ArrayList<Book>
。在调用ToString()
之前,您需要从列表中提取图书。如下所示:
for(int i = 0; i < mls.size(); i++) {
System.out.println(mls.get(i).ToString());
}
答案 1 :(得分:0)
您正在试图访问ToString
本书List
的方法"mls"
,这种方法没有这种方法,您的变量不是书本书的列表。< / p>
您必须为"mls.ToString()"
替换"usersBook.ToString()"
才能访问您的方法。
PS:您应该使用小写toString
重命名您的方法,在Java中,所有对象都隐式继承该方法,您可以/将覆盖它。
答案 2 :(得分:0)
问题符合:
System.out.println(mls.ToString());
ArrayList没有ToString()方法。 ArrayList有toString()方法。
解决方案是:
System.out.println(mls.toString());
或
System.out.println(mls);
你不会使用toString()方法,它会被自动调用。
第二个问题是Book类中的toString()方法应如下所示:
@Override
public String toString() {
return "The Author of this book is " + author +
"\nThe title of this book is " + title +
"\nThe year published is " + yearPub +
"\nThe number of pages is " + pages;
}