[英]What am I doing wrong with my code? Translating into PigLatin and cant figure out how to print returned value
[英]Trying to print out my ArrayList using one of my methods in my class what am i doing wrong?
這是我的程序。 我想做的就是在末尾打印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;
}
}
mls
不是一Book
。 這是一個ArrayList<Book>
。 您需要在調用ToString()
之前從列表中獲取書籍。 類似於以下內容:
for(int i = 0; i < mls.size(); i++) {
System.out.println(mls.get(i).ToString());
}
您正在嘗試訪問書籍List
"mls"
的方法ToString
,該方法沒有這樣的方法,您的變量不是書籍而是書籍列表。
您必須將"mls.ToString()"
替換為"usersBook.ToString()"
,才能訪問您的方法。
PS:您應該使用小寫的toString
重命名您的方法,在Java中,所有對象都隱式繼承該方法,您可以/應該覆蓋它。
問題符合:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.