使用JOptionPanes时如何摆脱for循环?

时间:2016-12-02 06:44:22

标签: java for-loop joptionpane break

我有一个很大的问题,我一直在努力,为了我的生活,无法做到这一点。从我现在收集到的内容来看,当我使用JOptionPanes时,我无法退出for循环,因为它会因某些原因永远不会到达它,即使代码正好在下面。

我的代码的目标是迭代.CSV文件,用户将输入一系列输入,最值得注意的是,我正在检查重复项,如果找到重复项,那么我将继续显示JOptionPane.showMessageDialog,并在消息显示后中断for循环。

然而,我的消息对话框不断循环,不再继续,所以我坚持认为我做错了。

这是我的代码:

JOptionPane.showMessageDialog(null, myPanel, "Edit Fruit", JOptionPane.INFORMATION_MESSAGE);

        for (row = 0; row < myEntries.size(); row++)
        {
            for (column = 0; column < myEntries.get(row).length; column++)
            {
                //If serial exists
                if (myEntries.get(row)[column].trim().equals(newSerial.getText()))
                {
                    //break loop
                    JOptionPane.showMessageDialog(null, "Serial already exists!");
                    break;
                //If the serial does not exist, write this new line to the end of the file        
                }else if (!(myEntries.get(row)[column].trim().equals(newSerial.getText())))
                {
                    System.out.println(row);
                    myEntries.add(new String[] {newSerial.getText(), dateFormat.format(newDate), newLocation.getText(), 
                    "",newAllocation, newCondition, newType.getText(), newComments.getText()});
                }

            }

如果我的文档中包含“6”,并且我搜索了该文档,则此代码将因某种原因迭代这两个if语句,并且不会中断。

意味着,我的for循环将遍历我的文本文件,直到找到来自用户输入的完全匹配,如果是,则中断。如果找不到副本,则将新行代码附加到文件末尾。

它只是不起作用,我不知道从哪里开始,所以我希望有人可以提供帮助。

如果您需要更多信息,请告知我们,以便我可以提供并解决此问题。

谢谢。

2 个答案:

答案 0 :(得分:3)

如果您打算break第一个循环,可以使用labels

OUTER: for (row = 0; row < myEntries.size(); row++) {
    for (column = 0; column < myEntries.get(row).length; column++) {
        // If serial exists
        if (myEntries.get(row)[column].trim().equals(newSerial.getText())) {
            // break loop
            OptionPane.showMessageDialog(null, "Serial already exists!");
            break OUTER;
        // If the serial does not exist, write this new line to the end of the file
        } else if (!(myEntries.get(row)[column].trim().equals(newSerial.getText()))) {
            System.out.println(row);
            myEntries.add(new String[] { newSerial.getText(), dateFormat.format(newDate), newLocation.getText(), "", newAllocation, newCondition, newType.getText(), newComments.getText() });
        }

    }
}

答案 1 :(得分:1)

您还需要一个break

for (row = 0; row < myEntries.size(); row++)
{
    for (column = 0; column < myEntries.get(row).length; column++)
    {
        //If serial exists
        if (myEntries.get(row)[column].trim().equals(newSerial.getText()))
        {
            //break loop
            JOptionPane.showMessageDialog(null, "Serial already exists!");
            break;
            //If the serial does not exist, write this new line to the end of the file        
        } else if (!(myEntries.get(row)[column].trim().equals(newSerial.getText())))
        {
            System.out.println(row);
            myEntries.add(new String[] {newSerial.getText(), dateFormat.format(newDate), newLocation.getText(), "",newAllocation, newCondition, newType.getText(), newComments.getText()});
        }
   }
   break; // <- This is required to break from outer loop.
}