2016-11-20 7 views
-1

私は現在、書籍インベントリシステムを行っているので、ユーザーはリストに入力した後に本のコピー数を更新することができます。私はユーザーが最初に更新したいアイテムを検索させる。しかし、まず、各テキストフィールドに情報を表示し、それを更新します。私はすでにコードを書いたが、うまくいかなかった。テキストフィールドには何も表示されません。ここで何が問題なのか分かりますか?GUIでJavaを使用してリンクリストのデータを更新するにはどうすればよいですか?

これは私が情報を格納するために使用私のデータクラスです:

public class Data { 
    LinkedList list; 
    String name; 
    String author; 
    int isbn; 
    int number; 
    String genre; 

public Data(String name, String author, int isbn, int number, String genre) 
{ 
    this.name = name; 
    this.author = author; 
    this.isbn = isbn; 
    this.number = number; 
    this.genre = genre; 
} 

public String toString() 
{ 
    return("Book Name: "+name+"\nAuthor: "+author+"\nISBN Number: "+isbn+"\nNumber of Copies: "+number+"\nGenre: "+genre+"\n\n"); 
} 

public String getName() 
{ 
    return name; 
} 

public String getAuthor() 
{ 
    return author; 
} 

public int getIsbn() 
{ 
    return isbn; 
} 

public int getNumber() 
{ 
    return number; 
} 

public String getGenre() 
{ 
    return genre; 
} 

public void setNumber(int number) 
{ 
    this.number += number; 
} 
} 

そして、これが私の更新方法であるとの情報方法を示しています。

public static void updatesearch(String sname, String name, String author, String genre, int isbn, int number, boolean found, int cnumber) 
{ 
    Node current = head; 
    if (current == null){ 
     JOptionPane.showMessageDialog(null, "The list is empty."); 
    } 
    else{ 
     while (current != null && !current.data.getName().equals(sname)) 
     { 
      current = current.next; 
     } 
     if (current != null && current.data.getName().equals(sname)){ 
      found = true; 
      name = current.data.getName(); 
      author = current.data.getAuthor(); 
      isbn = current.data.getIsbn(); 
      number = current.data.getNumber(); 
      genre = current.data.getGenre(); 
      current.data.setNumber(cnumber); 
     } 
     else{ 
      found = false; 
      JOptionPane.showMessageDialog(null,"The book was not found."); 
     } 
    } 
} 

public static void showinfo(String sname, String name, String author, String genre, int isbn, int number) 
{ 
    Node current = head; 
    if (current == null){ 
     JOptionPane.showMessageDialog(null, "The list is empty."); 
    } 
    else{ 
     while (current != null && !current.data.getName().equals(sname)) 
     { 
      current = current.next; 
     } 
     if (current != null && current.data.getName().equals(sname)){ 
      name = current.data.getName(); 
      author = current.data.getAuthor(); 
      isbn = current.data.getIsbn(); 
      number = current.data.getNumber(); 
      genre = current.data.getGenre(); 
     } 
     else{ 
      JOptionPane.showMessageDialog(null,"The book was not found."); 
     } 
    } 
} 

をそして、これは私がGUIで持っているものです。 (検索ボタンの下)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    String sname, name=null, author=null, genre=null; 
    int isbn=0, number=0; 
    sname = jTextField1.getText(); 
    LinkedList.showinfo(sname.toUpperCase(), name, author, genre, isbn, number); 
     jTextField3.setText(name); 
     jTextField4.setText(author); 
     jTextField5.setText(String.valueOf(isbn)); 
     jTextField6.setText(String.valueOf(number)); 
     jTextField2.setText(genre); 
}     

これは、更新ボタンの下にある:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    String sname, name=null, author=null, genre=null; 
    int isbn=0, number=0, cnumber; 
    boolean found=false; 
    sname = jTextField1.getText(); 
    cnumber = Integer.parseInt(jTextField6.getText()); 
    LinkedList.updatesearch(sname.toUpperCase(),name, author, genre, isbn, number, found, cnumber); 
} 

これは私の更新ページがどのように見えるかです:

誰もが私を助けることができますこの?ありがとうございました。

答えて

0

問題は、Javaのメソッドパラメータがそのようnameauthorgenreisbn、又はnumberないの値を変更する、値によってではなく、参照によって渡されるためshowinfoメソッドのコードは有用な何もしないことですメソッドを呼び出す同じ名前の変数の値を変更しないでください。

+0

どうすれば変更できますか? LinkedListクラスのオブジェクトを作成しますか? 'LinkedList list = new LinkedList()'のように? – Acetamide

関連する問題