2015-04-15 2 views
0

У меня есть это задание, где я могу напечатать все в одном диалоговом окне название книги, номер isbn и оплатить все 5 книг. У меня возникают проблемы с этим в цикле for. я получаю сообщение об ошибке с текущим кодом при попытке получить название книги из моего toString, говорящего, что нестационарная переменная не может ссылаться на статический контекст, но я думаю, что это потому, что я не называю это правильным.Как я могу вернуть объект из строки toString

public class Book 
{ 
    private String title; 
    private String author; 
    private String isbn; 
    private Double price; 
    private Publisher publisher; 

    public Book() 
    { 
     setTitle(""); 
     setAuthor(""); 
     setIsbn(""); 
     setPrice(0.0); 
     setPublisher(new Publisher()); 
    } 

    public Book(String t, String a, String i, double p, Publisher n) 
    { 

     setTitle(t); 
     setAuthor(a); 
     setIsbn(i); 
     setPrice(p); 
     setPublisher(n); 
    } 

    public void setTitle(String t) 
    { 
     title = t; 
    } 

    public String getTitle() 
    { 
     return title; 
    } 

    public void setAuthor(String a) 
    { 
     author = a; 
    } 

    public String getAuthor() 
    { 
     return author; 
    } 

    public void setIsbn(String i) 
    { 
     isbn = i; 
    } 

    public String getIsbn() 
    { 
     return isbn; 
    } 

    public void setPrice(double p) 
    { 
     price = p; 
    } 

    public double getPrice() 
    { 
     return price; 
    } 

    public void setPublisher(Publisher n) 
    { 
     publisher = n; 
    } 

    public Publisher getPublisher() 
    { 
     return publisher; 
    } 

    public double calculateTotal(int quantity) 
    { 
     return(price * quantity); 
    } 

    public String toString() 
    { 
     return(" Title " + title + " Author " + author + " Isbn " + isbn 
      + " Price " + price + " Publisher " + publisher.toString()); 
    } 

} 




import javax.swing. JOptionPane; 

public class BookTest 
{ 


    public static void main(String args[]) 
    { 
     double charge; 


     String dataArray[][] = {{"Abraham Lincoln Vampire Hunter","Grahame-Smith","978-0446563079","13.99", "Haper", "NY"}, 
        {"Frankenstein","Shelley","978-0486282114","7.99","Pearson", "TX"}, 
        {"Dracula","Stoker","978-0486411095","5.99","Double Day", "CA"}, 
        {"Curse of the Wolfman"," Hageman","B00381AKHG","10.59","Harper", "NY"}, 
        {"The Mummy","Rice","978-0345369949","7.99","Nelson", "GA"}}; 




     Book bookArray[] = new Book[dataArray.length]; 

     int quantityArray[] = {12, 3, 7, 23, 5}; 

     for (int i = 0; i < dataArray.length; i++) 
     { 
      bookArray[i] = new Book(dataArray[i][0], dataArray[i][1], dataArray[i][2], 
       Double.parseDouble(dataArray[i][3]), new Publisher(dataArray[i][4], dataArray[i][5])); 
     } 

     String msg = " "; 



     for (int i = 0; i < bookArray.length; i++) 
     { 

      charge = bookArray[i].calculateTotal(quantityArray[i]); 

      msg += String.format("Title ", this.getTitle()); //stuff to print 


     } 


     JOptionPane.showMessageDialog(null, msg); 

    } 




} 
+0

Не могли бы вы предоставить более подробную информацию об ошибке? (то есть: какая строка/объект/метод он сбой) – bigp

ответ

2

Вы хотите сделать:

for (int i = 0; i < bookArray.length; i++) 
    { 

     charge = bookArray[i].calculateTotal(quantityArray[i]); 

     msg += String.format("Title ", bookArray[i].getTitle()); 

    } 

Вы получаете название конкретной книги (на которую ссылается bookArray [I])

+0

спасибо, что это сработало – Student214

0

Я думаю, что это может быть проблема с этой линии :

msg += String.format("Title ", this.getTitle()); //stuff to print 

попробовать это:

for (int i = 0; i < bookArray.length; i++) 
      { 

       charge = bookArray[i].calculateTotal(quantityArray[i]); 

       msg += String.format("Title %s", bookArray[i].getTitle()); //stuff to print 


      } 
Смежные вопросы