无法在Java中显示查询的搜索结果

时间:2014-10-16 18:55:18

标签: java bluej

我仍然相当熟悉编程,并且需要一些帮助来完成一个程序。

这是一个简单的程序,用Bluej编写,接收用户的输入,然后显示或搜索。

我正在努力使用这两种方法(显示和搜索),因为我不断显示我显示的消息,显示没有要显示的记录。

public class Collection extends Dvd
{
//private ArrayList<Dvd> dvds;
//private int[] array;
private Dvd dvd1;
private Dvd dvd2;
private Dvd dvd3;

/**
 * Constructor for objects of class Collection
 */
public Collection()
{
    //array = new int[2];
    //dvd1 = dvd1;
    //dvd2 = dvd2;
    //dvd3 = dvd3;
    dvd1 = new Dvd();
    dvd2 = new Dvd();
    dvd3 = new Dvd(); 
}
public static void main(String args[])
{    
     //creates an instance of the collection class 
    Collection collection = new Collection();
    collection.menu();
}
public void displayDvds()
{
    float totalPrice = 0;
    totalPrice = dvd1.getDvdPrice() + dvd2.getDvdPrice() + dvd3.getDvdPrice();
    double totalRunTime = 0;
    totalRunTime = dvd1.getRunTime() + dvd2.getRunTime() + dvd3.getRunTime();

    if (dvd1.getTitle() == "" || dvd1.getDirector() == "" || dvd1.getLead() == "" || dvd1.getRunTime() == 0 || dvd1.getDvdPrice() == 0 || dvd2.getTitle() == "" || 
        dvd2.getDirector() == "" || dvd2.getLead() == "" || dvd2.getRunTime() == 0 || dvd2.getDvdPrice() == 0 || dvd3.getTitle() == ""|| dvd3.getDirector() == ""
        ||dvd3.getLead() == "" ||dvd3.getRunTime() == 0 ||dvd3.getDvdPrice() == 0)
        {
           System.out.println("Sorry, there were no search results to display.");
        }
         else  
         {
    System.out.println(" \nDvd Collection:\n DVD1:\n Title: " + dvd1.getTitle() + " \nDirector: "
                        + dvd1.getDirector() + " \nLead Act: " + dvd1.getLead() + " \nRun Time: " + dvd1.getRunTime() + " \nPrice: "
                        + dvd1.getDvdPrice());

    System.out.println(" \nDvd Collection:\n DVD1:\n Title: " + dvd2.getTitle() + " \nDirector: "
                        + dvd2.getDirector() + " \nLead Act: " + dvd2.getLead() + " \nRun Time: " + dvd2.getRunTime() + " \nPrice: "
                        + dvd2.getDvdPrice());

    System.out.println(" \nDvd Collection:\n DVD1:\n Title: " + dvd3.getTitle() + " \nDirector: "
                        + dvd3.getDirector() + " \nLead Act: " + dvd3.getLead() + " \nRun Time: " + dvd3.getRunTime() + " \nPrice: "
                        + dvd3.getDvdPrice());

    System.out.println(" \nCombined cost of combined Dvd's: " + totalPrice);

    System.out.println(" \nCombined Run Time of combined Dvd's: " + totalRunTime);
}
}

public void searchDvd()
 {
    String temp = ""; // Temporary variable to hold title
    // Assign dvd 3's title to temp

    System.out.println ("\nPlease enter Title to search for: ");
    temp= Genio.getString();

    if(temp.equals(dvd1.getTitle()))
    {
        System.out.println("\nDvd is present in collection at location 1 (Dvd 1 in collection): " + dvd1.getTitle());
    }
     if(temp.equals(dvd2.getTitle()))
    {
        System.out.println("\nDvd is present in collection at location 2 (Dvd 2 in collection): " + dvd2.getTitle());
    }
     if(temp.equals(dvd3.getTitle()))
    {
        System.out.println("\nDvd is present in collection at location 3 (Dvd 3 in collection): " + dvd3.getTitle());
    }
    else 
     System.out.println("\nSorry, there were no search results to display.\n ");
}
public void menu()
      {
          //declare the option field
          int option;

               //start do while loop for the menu
               do
               {
                    //display the menu
                    System.out.println("1: Add (up to 3) Dvd's to Collection");
                    System.out.println("2: Display Dvd Collection");
                    System.out.println("3: Search Dvd Collection by collection");
                    System.out.println("4: Quit program");

                    //prompt user to enter a selection
                    System.out.println("Please select an option (1 - 4): ");
                    //use genio to get the user input
                    option=Genio.getInteger();

                    // Option 1 allows user to add up to 3 Dvd's
                    if (option == 1) 
                    { 
                        dvd1.getInputs();
                        dvd2.getInputs();
                        dvd3.getInputs();
                    }
                    // Option 2 allows user to display Dvd collection
                    if (option == 2)
                        displayDvds();
                    //i Option 3 allows the user to search the Dvd collection by title
                    if (option == 3)
                        searchDvd();
               }

               // Option 4 will print a message that tells that the program may be exited
                    while (option != 4);
                    System.out.println("You may now close the program");
}

整个DVD类:

public Dvd( )
{
  dvdTitle = ""; 
  dvdDirector = ""; 
  dvdLead = ""; 
  dvdRunTime = 0; 
  dvdPrice = 0;
}

public void getInputs()
{
    System.out.println("Please enter the Dvd Title: ");
    dvdTitle=Genio.getString();

    System.out.println("Please enter the Dvd Director: ");    
    dvdDirector=Genio.getString();

    System.out.println("Please enter the Dvd Lead Actor/Actress: ");      
    dvdLead=Genio.getString();

    System.out.println("Please enter the Dvd Run Time: ");    
    dvdRunTime=Genio.getInteger();

    System.out.println("Please enter the Dvd Cost: ");      
    dvdRunTime=Genio.getInteger();
}
   public String getTitle(){
     return dvdTitle;
   }
   public String getDirector(){
     return dvdDirector;
   }
   public String getLead(){
     return dvdLead;
   }
   public double getRunTime()
   {
     return dvdRunTime;
   }
   public float getDvdPrice()
   {
     return dvdPrice;
   }      

}

Genio课程:

public class Genio
{


/**
 * Constructor for objects of class genio, but nothing needing constructed!
 */
public Genio()
{
}


/** 
 * getStr()  is a private method which safely returns a string for use
 * by the public methods getString() and getCharacter() in the class.
 * 
 * @return String for further processing withing the class
 */

private static String getStr() 
{
    String inputLine = "";
    BufferedReader reader = 
        new BufferedReader(new InputStreamReader(System.in));
    try 
    {
        inputLine = reader.readLine();
    }

    catch(Exception exc) 
    {
        System.out.println ("There was an error during reading: "
                            + exc.getMessage());
    }
    return inputLine;
}

/** 
 * getInteger() returns an integer value. Exception handling is used to trap
 * invalid data - including floating point numbers, non-numeric characters
 * and no data. In the event of an exception, the user is prompted to enter
 * the correct data in the correct format.
 * 
 * @return validated int value 
 */
public static int getInteger()
{
    int temp=0;
    boolean OK = false;

    BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
    do 
    {
        try
        {
            temp = Integer.parseInt(keyboard.readLine());
            OK = true;
        }

        catch (Exception eRef)
        {
            if (eRef instanceof NumberFormatException) 
            {
                System.out.print("Integer value needed: ");
            }
            else
            {
                System.out.println("Please report this error: "+eRef.toString());
            }
        }

    } while(OK == false);
    return(temp);
 }

/** 
 * getFloat() returns a floating point value. Exception handling is used to trap
 * invalid data - including non-numeric characters and no data.
 * In the event of an exception (normally no data or alpha), the user is prompted to enter
 * data in the correct format
 * 
 * @return validated float value
 */        
public static float getFloat()
{
    float temp=0;
    boolean OK = false;

    BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
    do 
    {
        try
        {
            temp = Float.parseFloat(keyboard.readLine());
            OK = true;
        }


        catch (Exception eRef)
        {
            if (eRef instanceof NumberFormatException) 
            {
                System.out.print("Number needed: ");
            } 
            else
            {
                System.out.println("Please report this error: "+eRef.toString());
            }
        }

    } while(OK == false);

    return(temp);
 }

/** 
 * getDouble() returns a double precision floating point value. 
 * Exception handling is used to trap invalid data - including non-numeric
 * characters and no data.
 * In the event of an exception, the user is prompted to enter
 * data in the correct format
 * 
 * @return validated double precision value
 */        
public static double getDouble()
{
    double temp=0;
    boolean OK = false;
    BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
    do 
    {
        try
        {
            temp = Double.parseDouble(keyboard.readLine());
            OK = true;
        }

        catch (Exception eRef)
        {
            if (eRef instanceof NumberFormatException) 
            {
                System.out.print("Number needed: ");
            }
            else
            {
                System.out.println("Please report this error: "+eRef.toString());
            }
        }

    } while(OK == false);

    return(temp);
 }

/** 
 * getCharacter() returns a character from the keyboard. It does this by 
 * reading a string then taking the first character read. Subsequent characters
 * are discarded without raising an exception.
 * The method checks to ensure a character has been entered, and prompts 
 * if it has not.
 * 
 * @return validated character value
 */

 public static char getCharacter()
 {
     String tempStr="";
     char temp=' ';
     boolean OK = false;
     do 
     {
         try
         {
             tempStr = getStr();
             temp = tempStr.charAt(0);
             OK = true;
         }

         catch (Exception eRef)
         {
             if (eRef instanceof StringIndexOutOfBoundsException)
             {
                 // means nothing was entered so prompt ...
                 System.out.print("Enter a character: ");
             }            
             else 
             {
                 System.out.println("Please report this error: "+eRef.toString());
             }
         }

     } while(OK == false);

     return(temp);
 }

 /** 
  * getString() returns a String entered at the keyboard.
  * @return String value
  */

 public static String getString()
 {
    String temp="";
    try
    {
        temp = getStr();
    }
    catch (Exception eRef)
    {
        System.out.println("Please report this error: "+eRef.toString());
    }
    return(temp);
 }     

} 如果我的代码编写得非常糟糕,我会道歉,但是当我单独调用它们时,我的方法会起作用。

如上所述,问题是当我选择显示或搜索(添加记录后)时,我只收到消息“抱歉,没有要显示的搜索结果。”

1 个答案:

答案 0 :(得分:1)

问题是dvdPrice永远不会为DVD设置它保持在0.你把dvdRunTime放在你的getInputs()方法中两次。

public void getInputs()
{
    System.out.println("Please enter the Dvd Title: ");
    dvdTitle=Genio.getString();

    System.out.println("Please enter the Dvd Director: ");    
    dvdDirector=Genio.getString();

    System.out.println("Please enter the Dvd Lead Actor/Actress: ");      
    dvdLead=Genio.getString();

    System.out.println("Please enter the Dvd Run Time: ");    
    ***dvdRunTime=Genio.getInteger();*** //should be dvdRunTime = Genio.getDouble();

    System.out.println("Please enter the Dvd Cost: ");      
    ***dvdRunTime=Genio.getInteger();*** //should be dvdPrice = Genio.getFloat();
}

此外,如果陈述应该是这样的:

if (dvd1.getTitle().equalsIgnoreCase("")) {

比较字符串时,使用equals或equalsIgnoreCase方法而不是==。 我将它更改为dvd1.getTitle()。equalsIgnoreCase,因为你同时输入所有3个DVD,所以如果没有输入第一个的标题,那么它们都没有。

这是两个类的完整工作代码,尽管仍有一些事情需要更改:

收集:

public class Collection {
    // private ArrayList<Dvd> dvds;
    // private int[] array;
    private Dvd dvd1 = null;
    private Dvd dvd2 = null;
    private Dvd dvd3 = null;

    /**
     * Constructor for objects of class Collection
     */
    public Collection() {
        // array = new int[2];
        // dvd1 = dvd1;
        // dvd2 = dvd2;
        // dvd3 = dvd3;
        dvd1 = new Dvd();
        dvd2 = new Dvd();
        dvd3 = new Dvd();
    }

    public static void main(String args[]) {
        // creates an instance of the collection class
        Collection collection = new Collection();
        collection.menu();
    }

    public void displayDvds() {
        float totalPrice = 0;
        totalPrice = dvd1.getDvdPrice() + dvd2.getDvdPrice()
                + dvd3.getDvdPrice();
        double totalRunTime = 0;
        totalRunTime = dvd1.getRunTime() + dvd2.getRunTime()
                + dvd3.getRunTime();

        if (dvd1.getTitle().equalsIgnoreCase("")) {
            System.out
                    .println("Sorry, there were no search results to display.");
        } else {
            System.out.println(" \nDvd Collection:\n DVD1:\n Title: "
                    + dvd1.getTitle() + " \nDirector: " + dvd1.getDirector()
                    + " \nLead Act: " + dvd1.getLead() + " \nRun Time: "
                    + dvd1.getRunTime() + " \nPrice: " + dvd1.getDvdPrice());

            System.out.println(" \nDvd Collection:\n DVD1:\n Title: "
                    + dvd2.getTitle() + " \nDirector: " + dvd2.getDirector()
                    + " \nLead Act: " + dvd2.getLead() + " \nRun Time: "
                    + dvd2.getRunTime() + " \nPrice: " + dvd2.getDvdPrice());

            System.out.println(" \nDvd Collection:\n DVD1:\n Title: "
                    + dvd3.getTitle() + " \nDirector: " + dvd3.getDirector()
                    + " \nLead Act: " + dvd3.getLead() + " \nRun Time: "
                    + dvd3.getRunTime() + " \nPrice: " + dvd3.getDvdPrice());

            System.out.println(" \nCombined cost of combined Dvd's: "
                    + totalPrice);

            System.out.println(" \nCombined Run Time of combined Dvd's: "
                    + totalRunTime);
        }
    }

    public void searchDvd() {
        String temp = ""; // Temporary variable to hold title
        // Assign dvd 3's title to temp

        System.out.println("\nPlease enter Title to search for: ");
        temp = Genio.getString();

        if (temp.equals(dvd1.getTitle())) {
            System.out
                    .println("\nDvd is present in collection at location 1 (Dvd 1 in collection): "
                            + dvd1.getTitle());
        }
        if (temp.equals(dvd2.getTitle())) {
            System.out
                    .println("\nDvd is present in collection at location 2 (Dvd 2 in collection): "
                            + dvd2.getTitle());
        }
        if (temp.equals(dvd3.getTitle())) {
            System.out
                    .println("\nDvd is present in collection at location 3 (Dvd 3 in collection): "
                            + dvd3.getTitle());
        } else
            System.out
                    .println("\nSorry, there were no search results to display.\n ");
    }

    public void menu() {
        // declare the option field
        int option;

        // start do while loop for the menu
        do {
            // display the menu
            System.out.println("1: Add (up to 3) Dvd's to Collection");
            System.out.println("2: Display Dvd Collection");
            System.out.println("3: Search Dvd Collection by collection");
            System.out.println("4: Quit program");

            // prompt user to enter a selection
            System.out.println("Please select an option (1 - 4): ");
            // use genio to get the user input
            option = Genio.getInteger();

            // Option 1 allows user to add up to 3 Dvd's
            if (option == 1) {
                dvd1.getInputs();
                dvd2.getInputs();
                dvd3.getInputs();
            }
            // Option 2 allows user to display Dvd collection
            if (option == 2)
                displayDvds();
            // i Option 3 allows the user to search the Dvd collection by title
            if (option == 3)
                searchDvd();
        }

        // Option 4 will print a message that tells that the program may be
        // exited
        while (option != 4);
        System.out.println("You may now close the program");
    }
}

DVD:

public class Dvd {
    private String dvdTitle;
    private String dvdDirector;
    private String dvdLead;
    private double dvdRunTime;
    private float dvdPrice;

    public Dvd() {
        dvdTitle = "";
        dvdDirector = "";
        dvdLead = "";
        dvdRunTime = 0;
        dvdPrice = 0;
    }

    public void getInputs() {
        System.out.println("Please enter the Dvd Title: ");
        dvdTitle = Genio.getString();

        System.out.println("Please enter the Dvd Director: ");
        dvdDirector = Genio.getString();

        System.out.println("Please enter the Dvd Lead Actor/Actress: ");
        dvdLead = Genio.getString();

        System.out.println("Please enter the Dvd Run Time: ");
        dvdRunTime = Genio.getDouble();

        System.out.println("Please enter the Dvd Cost: ");
        dvdPrice = Genio.getFloat();
    }

    public String getTitle() {
        return dvdTitle;
    }

    public String getDirector() {
        return dvdDirector;
    }

    public String getLead() {
        return dvdLead;
    }

    public double getRunTime() {
        return dvdRunTime;
    }

    public float getDvdPrice() {
        return dvdPrice;
    }
}