2016-07-31 2 views
-1

모든 출력을 3 개의 다른 클래스에 걸쳐 하나의 JOption 창에 넣으려고합니다. 현재 전자 책을 인쇄 할 때마다 각 개별 대화 상자에 인쇄되어 한 번에 하나씩 확인을 눌러 모든 책을 순환해야합니다.여러 클래스에 걸쳐 하나의 JOption 창에 인쇄

하나의 대화 상자에 "Programmed By"및 전자 책 수/비용 섹션과 함께 포함시켜야합니다.

그리고 각각의 클래스를 가져와야하는지 궁금합니다. 고맙습니다.

import javax.swing.JOptionPane; // dialog box 

public class Ebook 
{ 
    private String author = ""; 
    private String title = ""; 
    private double price = 0.0; 
    private String isbn = ""; 


     public Ebook(String author, String title, double price, String isbn) // ebook constructor 
     { 
      this.author = author; 
      this.title = title; 

      if (price > 0) // validate non-negative price 
       this.price = price; 

      else 
      { 
       this.price = 0.0; 
        System.out.println("Invalid price"); 
      } 

      if (isbn.length() == 10 || isbn.length() == 13) // isbn length must be exactly 10 or 13 
       this.isbn = isbn; 

      else 
       this.isbn = "None"; 
     } 

     public void setPrice(double price) 
     { 
      if (price < 0) // validate 
      { 
       System.out.println("Invalid price"); 
      } 

      else 
       this.price = price; 
     } 

     public double getPrice() 
     { 
      return price; 
     } 

     public void setAuthor(String theAuthor) 
     { 
      this.author = theAuthor; 
     } 

     public String getAuthor() 
     { 
      return author; 
     } 

     public void setIsbn(String isbn) 
     { 
      if (isbn.length() == 10 || isbn.length() == 13) // validate 
      { 
       this.isbn = isbn; 
      } 
      else 
       isbn = "None"; 
     } 

     public String getIsbn() 
     { 
      return isbn; 
     } 

     public void setTitle(String title) 
     { 
      this.title = title; 
     } 

     public String getTitle() 
     { 
      return title; 
     } 

     public String toString() 
     { 
      return String.format("Author: %s%nTitle: %s%nPrice: $%.1f%nISBN: %s%n", 
       author,title,price,isbn); 




     } 
} // This was made by -- 



import javax.swing.JOptionPane; // dialog box 

public class EbookLibrary 
{ 
    private int count = 0; 
    private double total_cost = 0.0; 


    Ebook[] ebooks = new Ebook[25]; // array of ebook objects 

    public EbookLibrary() // no argument constructor for ebooklibrary object in library test 
    { 

    } 
    public int getCount() // total number of ebooks 
    { 
     return count; 
    } 
    public double getCost() // sum of all ebooks 
    { 
     return total_cost; 
    } 
    public String toString() // formatted string with the number and cost of all ebooks 
    { 
     String message2 = String.format("Ebook count: %d%nTotal Cost: $%.1f", count, total_cost); // for dialog box 



     return message2; 
    } 
    public void addEbook(String author, String title, double price, String isbn) // adds ebooks to the array 
    { 

    if (count < 25) // dont walk off array 
    { 


     Ebook anEbook = new Ebook(author,title,price,isbn); // ebook object to be created when addEbook is called 

     ebooks[count] = anEbook; 

     total_cost += price; // total of all the books 

     String message = String.format("%s%n", ebooks[count]); 
      JOptionPane.showMessageDialog(null,message); // display books in dialog boxes 

     count++; // increment count each time 


    } 



    } 



} // This was made by ------ 

import javax.swing.JOptionPane; // dialog box 

public class EbookLibraryTest 
{ 
    public static void main(String[] args) 
    { 

     EbookLibrary aLibrary = new EbookLibrary(); // EbookLibrary object for calling addEbook 

     // ebook objects 
     aLibrary.addEbook("Blah", "What", 88.8, "1234567891") 
     aLibrary.addEbook("Thing Do", "What What", 45.0, "1234567891111"); 
     aLibrary.addEbook("Stephen King","The Thing",1.1, "1234567891"); 
     aLibrary.addEbook("Robert","A Title", -1.0, "1234567891"); // test invalid price, should return 0.0 and "invalid price" 
     aLibrary.addEbook("Tom","Bad Title", 33.1, "1234567891111"); 
     aLibrary.addEbook("Bob", "FML and Other Acronyms", 25.0, "1"); // test ISBN value, should return "None" 


     aLibrary.getCount(); 
     aLibrary.getCost(); 

     String message = "Programmed by ---- "; 
      String message2 = String.format("%s%n", aLibrary.toString()); 
       JOptionPane.showMessageDialog(null,message + "\n " + message2); 




    } 
} 

답변

1

먼저 Ebook이 추가되면 대화 상자를 추가 할 부분을 제거해야합니다. 대신에 모든 것을 한 번에 수행하는 한 가지 방법을 원합니다.

public void printOrder(String signature){ 
    String message = ""; 
    for (int q = 0; q < count; q++){ 
     message += String.format("%s%n", ebooks[q]); 
    } 
    message += signature; 
    JOptionPane.showMessageDialog(null,message); 
} 

해당 코드는 EBookLibrary입니다. 또한 Ebook을 저장하는 데 List을 조사하고 싶을 수도 있으므로 원하는 크기에 따라 확장 및 축소 할 수 있습니다. 지금 당신은 당신의 서명을 인쇄 할 말


, 당신은 printOrder() 방법으로 그것을 변경하고 인쇄했을 텍스트를 구문 분석 할 수 있습니다.

String message = "Programmed by ---- "; 
String message2 = String.format("%s%n", aLibrary.toString()); 

aLibrary.printOrder(message + "\n " + message2); 
1

당신은 그냥 루프를 통해 UR EBookLibrary 클래스 내에서 다음 주 사용의 모든 addedEbook에 대한 정보를 반환하는 방법을 만드는 대신 1

7 메시지 대화 상자를 표시하고 책에 하나를 추가 한 시간. 새 책을 추가 할 때마다 책에서 반환 한 정보 (string)는 main에있는 message2에 추가됩니다.

또는 대신 새로운 방법을 만드는 당신은 같은 addEbook 방법 편집 할 수 있습니다

String message = String.format("%s%n", ebooks[count]); 
count++; 
return message; //instead of JOptionPane 

을하고 main 방법 :

EbookLibrary aLibrary = new EbookLibrary(); // EbookLibrary object for calling addEbook 
    String message = "Programmed by ---- "; 

    while(count < 25) { 
    // ebook objects 
    message += aLibrary.addEbook("Blah", "What", 88.8, "1234567891") + '/n': 
    message += aLibrary.addEbook("Thing Do", "What What", 45.0, "1234567891111") + '/n'; 
    message += aLibrary.addEbook("Stephen King","The Thing",1.1, "1234567891") + '/n'; 
    message += aLibrary.addEbook("Robert","A Title", -1.0, "1234567891") + '/n'; // test invalid price, should return 0.0 and "invalid price" 
    message += aLibrary.addEbook("Tom","Bad Title", 33.1, "1234567891111") + '/n'; 
    message += aLibrary.addEbook("Bob", "FML and Other Acronyms", 25.0, "1") + '/n'; // test ISBN value, should return "None" 


    aLibrary.getCount(); 
    aLibrary.getCost(); 


     //String message2 = String.format("%s%n", aLibrary.toString()); 
      JOptionPane.showMessageDialog(null,message); 

이를 시도하거나 JOptionPanes을 복용 단지 시도 라이브러리에서 꺼내서 단일 창만 main에 표시하십시오.