dimanche 24 novembre 2019

What is causing my error with my if statements?

The goal of my program is to have the user input 3 books, and if all of the books are different then my code will print all of the books in this format:

Book 1: Title, Author, Publishing year, Cost

Book 2: Title, Author, Publishing year, Cost

Book 3: Title, Author, Publishing year, Cost.

If two of the books are the same, it should print the unique books in this format, with book 1 being the duplicated book:

Book 1: Title, Author, Publishing year, Cost x2

Book 2: Title, Author, Publishing year, Cost

Book 3: Title, Author, Publishing year, Cost

And if three of the books are the same, it should print one book's information with "3x" at the end.

But when I run my code, all three books are printed no matter what and it's as if my if statements didn't even run.

Here is my code for the tester class:

import java.util.Scanner;
public class BookTester{

    public static void main(String[] args){


        //Program should be written here:
        System.out.println("Begin Tests");

             Scanner input  = new Scanner(System.in);
             int index = 1;
             System.out.println("Enter the title: ");
             String title = input.nextLine();
             System.out.println("Enter the author: ");
             String author = input.nextLine();
             System.out.println("Enter the publishing year: ");
             int year = input.nextInt();
             System.out.println("Enter the cost in double form: ");
             double cost = input.nextDouble();
             Book book1 = new Book(index, title, author, year, cost);

            Scanner input2  = new Scanner(System.in);
             int index2 = 2;
             System.out.println("Enter the title: ");
             String title2 = input2.nextLine();
             System.out.println("Enter the author: ");
             String author2 = input2.nextLine();
             System.out.println("Enter the publishing year: ");
             int year2 = input2.nextInt();
             System.out.println("Enter the cost in double form: ");
             double cost2 = input2.nextDouble();
             Book book2 = new Book(index2, title2, author2, year2, cost2);

            Scanner input3  = new Scanner(System.in);
             int index3 = 3;
             System.out.println("Enter the title: ");
             String title3 = input3.nextLine();
             System.out.println("Enter the author: ");
             String author3 = input3.nextLine();
             System.out.println("Enter the publishing year: ");
             int year3 = input3.nextInt();
             System.out.println("Enter the cost in double form: ");
             double cost3 = input3.nextDouble();
             Book book3 = new Book(index3, title3, author3, year3, cost3);


           if(book1.equals(book2))
            {
                System.out.println(book1.toString() + " 2x");
                System.out.println(book3.toString());
            }

           else if(book1.equals(book3))
            {
                System.out.println(book1.toString() + " 2x");
                System.out.println(book2.toString());
            }

            else if(book2.equals(book3))
            {
                System.out.println(book1.toString());
                System.out.println(book2.toString() + " 2x");
            }

            else if(book1.equals(book2) && book2.equals(book3))
            {
                System.out.println(book1.toString() + " 3x");
            }


            else 
            {
                System.out.println(book1.toString());
                System.out.println(book2.toString());
                System.out.println(book3.toString());
            }



    }                           
}

And here is my code for my book class:

    /**
   A Book object should be created here
*/
public class Book
{  
    //Instance Variables
    private int bookIndex;
    private String title;
    private String author;
    private int year;
    private double cost;

    //Constructors
    public Book()
    {

    }

    public Book(int theIndex, String theTitle, String theAuthor, int theYear, double theCost)
    {
    bookIndex = theIndex;
    title = theTitle;
    author = theAuthor;
    year = theYear;
    cost = theCost; 
    }

    //methods

    public int getIndex()
    {
        return bookIndex;
    }


    public String getTitle()
    {
        return title;
    }

    public String getAuthor()
    {
        return author;
    }

    public int getYear()
    {
        return year;  
    }

    public double getCost()
    {
        return cost;
    }

    public String toString()
    {
        return "Book " + getIndex() + ": " + "Title: " + getTitle() + ", " + "Author: " + getAuthor() + ", " + "Publication Year: " + getYear() + ", " + "Cost: " + " $" + getCost(); 
    }

   public boolean equals(Book other)
   {
       if (toString() == other.toString())
       {
           return true;
       }
       else
       {
           return false;
       }
   }


}

Aucun commentaire:

Enregistrer un commentaire