简体   繁体   中英

Trying to print out my ArrayList using one of my methods in my class what am i doing wrong?

Here is my program. All i'm trying to do is print the ArrayList at the end and it won't, what am i doing wrong I'm trying to use mls.ToString() but thats not working. Please tell me what i did wrong. PS this is homework and thanks for the help.

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);

}

}

Here is the Book class.

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 is not a Book . It is an ArrayList<Book> . You need to fetch the books from the list before calling ToString() . Something like the following:

for(int i = 0; i < mls.size(); i++) {
    System.out.println(mls.get(i).ToString());
}

You are triying to access the method ToString of a List of books "mls" , which hasn't such method, your variable is not a book is a list of books.

You have to replace "mls.ToString()" for "usersBook.ToString()" in order to access your method.

PS: You should rename your method with lowercase toString , in Java all objects implicitly inherit that method, you can/shall override it.

Problem is line with:

System.out.println(mls.ToString());

ArrayList don't have ToString() method. ArrayList have toString() method.

Solution is:

System.out.println(mls.toString());

or

System.out.println(mls);

You musn't use toString() method, it will be automatically called.

And second problem is that your toString() method in Book class should look like:

@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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM