2016-05-28 9 views
0

どうやってやるの?Java言語のループ問題を解決する

netbeansを使用している間、私はjavaの無限ループに関する基本的な問題を抱えているようです。私はすべてのデータをXMLファイルに書き込むテーブルにデータを挿入しています。 xmlファイルは書き込まれていますが、無限ループに入りますが、テーブルに追加する必要があり、エントリの各行に新しい値を追加している間は拡張する必要があります。だから、私はテーブルの中にプログラムをループさせずに行を印刷するデータ行を入力することさえできません。ここで

Pic of Table Before Entering Data In Fields

Pic of Table After Entering Data In Fields When Application Freezes After Going On An Infinite Loop

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

    DefaultTableModel model=(DefaultTableModel) jTable_tableDemo.getModel(); 

    model.addRow(new Object[]{jTextField_Name.getText(),jTextField_Address.getText(),jTextField_Phone.getText()}); 

    try { 
      int i = 0; 
      Document doc = new Document(); 

    Element theRoot = new Element("models"); 

    doc.setRootElement(theRoot); 
      while (jTextField_Name.getText()!=""){ 
      i++;  

      Element models = new Element("model"+i); 

    Element name1 = new Element("name"+i); 
    Element address1 = new Element("address"+i); 
    Element phone1 = new Element("phone"+i); 

    name1.setAttribute("name_id",""+i); 

    name1.addContent(new Text(jTextField_Name.getText())); 



    address1.setAttribute("address_id",""+i); 

     address1.addContent(new Text(jTextField_Address.getText())); 

      phone1.setAttribute("phone_id",""+i); 

     phone1.addContent(new Text(jTextField_Phone.getText())); 


      models.addContent(name1); 

    models.addContent(address1); 

      models.addContent(phone1); 

    theRoot.addContent(models); 

    XMLOutputter xmlOutput = new XMLOutputter(Format.getPrettyFormat()); 

    xmlOutput.output(doc, new FileOutputStream(new File("./src/jdomMade.xml"))); 

    System.out.println("Wrote to File"); 
      } 


}           
catch (Exception ex){ 

     ex.printStackTrace(); 
    } 
} 
はjdomMade.xmlファイル用にプリントアウトされたXMLファイルです:

私は無限ループと印刷を削除することによってこの問題を解決する方法を教えてください私はテーブルにデータを入力する回数だけです。どうもありがとう。モデル無限大までまで

<?xml version="1.0" encoding="UTF-8"?> 
<models> 
    <model1> 
    <name1 name_id="1">sdgsdfg</name1> 
    <address1 address_id="1">sdgsdg</address1> 
    <phone1 phone_id="1">sdgsg</phone1> 
    </model1> 
.....

...

何無限ループと移してjdomMadeにprinttedますのみデータが存在しないように、私はそれを解決することができます任意の方法。 xmlファイルは私がテーブルに入力するものですか?

すべてのご支援をいただければ幸いです!

+0

http://stackoverflow.com/q/37495159/1030675 – choroba

+0

ところエラーにあなたのコードを打破してくださいエラーまたはログキャストを送信しています。それは簡単に問題を特定するのに役立ちます。 – Aradhna

答えて

0

あなたは以下の条件

while (jTextField_Name.getText()!="") 

でループを開いて、その後、あなたのテーブルに値を追加しています。 しかし、値が追加されると、jTextField_Nameは変更されず、したがって条件は常にtrueになり、コードは無限ループに入ります。

この

 Document doc = new Document(); 

    Element theRoot = new Element("models"); 

    doc.setRootElement(theRoot); 
      i++;  

      Element models = new Element("model"+i); 

    Element name1 = new Element("name"+i); 
    Element address1 = new Element("address"+i); 
    Element phone1 = new Element("phone"+i); 

    name1.setAttribute("name_id",""+i); 

    name1.addContent(new Text(jTextField_Name.getText())); 



    address1.setAttribute("address_id",""+i); 

     address1.addContent(new Text(jTextField_Address.getText())); 

      phone1.setAttribute("phone_id",""+i); 

     phone1.addContent(new Text(jTextField_Phone.getText())); 


      models.addContent(name1); 

    models.addContent(address1); 

      models.addContent(phone1); 

    theRoot.addContent(models); 

    XMLOutputter xmlOutput = new XMLOutputter(Format.getPrettyFormat()); 

    xmlOutput.output(doc, new FileOutputStream(new File("./src/jdomMade.xml"))); 

    System.out.println("Wrote to File"); 

    //clearing fields 
    jTextField_Name.setText(""); 
    jTextField_Address.setText(""); 
    jTextField_Phone.setText(""); 

ような何かにあなたのtryブロックを変更

ゼロに設定されたグローバル変数としてiしてください。

同じ文書を再度作成しているため、以前の値が上書きされます。ファイルタイプのグローバル変数を作成し、このことができます:)この

xmlOutput.output(doc, new FileOutputStream(myFile)); 

希望のようにそれを使用

+0

助けてくれない –

+0

編集をチェックして試してみてください – Aradhna

+0

thnx lemme check now –