簡體   English   中英

嘗試使用班級中的一種方法打印出ArrayList,我在做什么錯?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM