2014-10-16 5 views
1

저는 아직 프로그래밍 초보자이며 프로그램을 마무리하는 데 도움이 필요합니다.Java에서 쿼리의 검색 결과를 표시 할 수 없습니다.

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

}

니오 클래스 : 내 코드는 정말 작성된 경우

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

} 내가 사과하지만 내 방법은 I 때 작동합니까 개별적으로 호출합니다.

앞서 언급했듯이 디스플레이 또는 검색 (레코드 추가 후)을 선택하면 "죄송합니다. 표시 할 검색 결과가 없습니다."라는 메시지 만 표시됩니다.

+0

시작할 필요가 없습니다 모든 코드를 여기에 게시하면 나머지 부분 없이는 도움이되지 않습니다. – brso05

+0

풍자 또는 진짜 응답? – DarkBlueMullet

+0

정품 응답 dvd1 2와 3 무엇이 진행되고 있는지 알지 못하는 한 getInputs() 코드가 없습니다. – brso05

답변

1

문제는 dvdPrice가 0에 머물러있는 DVD에 대해 설정되지 않는다는 것입니다. getInputs() 메소드에 dvdRunTime을 두 번 넣었습니다. 문은 다음과해야하는 경우

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("")) { 

문자열 사용을 비교 == 같거나 equalsIgnoreCase 방법이 아닙니다. 3 개의 dvd를 모두 동시에 입력 할 수 있기 때문에 dvd1.getTitle(). equalsIgnoreCase로 변경했습니다. 따라서 첫 번째 타이틀이 입력되지 않았 으면 아무 것도 입력되어 있지 않으므로.

이 컬렉션 :

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; 
    } 
} 
+0

아아아, 초보자 용 오류. 도와 주셔서 대단히 감사합니다. 나는 미래에 대한 게시 팁을 염두에 두겠다. 다시 한 번 감사드립니다, 많이 주셔서 감사합니다! – DarkBlueMullet

+0

내가 도와 드릴 수있어서 기쁩니다! – brso05

관련 문제