解决java语言中的循环问题

时间:2016-05-28 06:31:18

标签: java xml database loops while-loop

你会怎么做?

在使用netbeans时,我似乎在java中遇到了无限循环的基本问题。我将数据插入到一个表中,该表将所有数据写入xml文件。 xml文件正在被写入,但它会进入一个无限循环,而它应该添加到表中并扩展自己,只要我为每个条目行添加新值。所以我甚至无法将一行数据输入到打印行的表中,而程序不会进入循环。

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

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 这是为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.xml文件中?

非常感谢您的所有帮助!

1 个答案:

答案 0 :(得分:0)

您正在使用以下条件打开循环

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

然后在表格中添加值。 但是一旦添加了值,您就不会修改jTextField_Name,因此条件始终成立,并且您的代码进入无限循环。

将您的try块更改为此类

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

i设置为全局变量设置为零。

您正在再次创建相同的文档,因此它将覆盖以前的值。创建一个文件类型全局变量,然后像这样使用它

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

希望这会有所帮助:)