【问题标题】:How to make an array list to loop it self, while being in a loop?如何在循环中创建一个数组列表以自行循环?
【发布时间】:2014-11-17 20:21:06
【问题描述】:

是的,我有 3 个模型类,其中 3 个通过 SQL 从数据库(不同的表)获取数据并将数据保存到数组列表中。 现在我正在尝试将三个数组列表数据输入到表中。 问题是 2 个数组列表(关闭和关闭2)具有相同数量的数据,而 1 个数组列表只有 4 个值。我想要的是,如果 arraylist 中的日期与其他 arraylist 中的日期不匹配,它将在表中输出为 0。

这是由一个检查日期是否相等的 IF 语句完成的。

问题是arraylistclosure1只有4个值,它不会让遍历所有其他arraylist超过4次。

问题是,我怎样才能继续循环遍历 arraylists 关闭和关闭 2 并从头开始循环遍历 arraylist closing1?

try{

       Model_Closing[] closing = Model_Closing.QueryWhere();
       Model_Closing_DIV[] closing1 = Model_Closing_DIV.QueryWhere();
       //Model_Closing_VisUnit[] closing2 = Model_Closing_VisUnit.QueryWhere();

       model.setRowCount(0);
       for(int i=0; i < closing.length; i++)
          if (closing1[i].GetDate().equals(closing[i].GetDate())){                                
        model.insertRow(i,new Object[]{date=closing[i].GetDate(),openingDollarBalance = closingDollarBalance,"NA",fundValue,dollarTransactionAmount,closing[i].GetNAV() * dollarTransactionAmount,visibleUnits,closingDollarBalance,closing[i].GetNAV(),dailyDivRate=closing1[i].GetDiv(),dailyDivDollars = dailyDivRate * accruedUnits,dailyDivRate / closing[i].GetNAV(), accruedDivDollars = accruedUnits * dailyDivRate,accruedUnits = visibleUnits + dailyDivUnits, });
        }
          else {
       dailyDivRate = 0.0;  
       model.insertRow(i,new Object[]{date=closing[i].GetDate(),openingDollarBalance = closingDollarBalance,"NA",fundValue,dollarTransactionAmount,closing[i].GetNAV() * dollarTransactionAmount,visibleUnits,closingDollarBalance,closing[i].GetNAV(),dailyDivRate,dailyDivDollars = dailyDivRate * accruedUnits,dailyDivRate / closing[i].GetNAV(), accruedDivDollars = accruedUnits * dailyDivRate,accruedUnits = visibleUnits + dailyDivUnits, });      
          }


        if (closingTable == null) {
            closingTable = new JTable(model);
           add(new JScrollPane(closingTable));
        }
       else{
            closingTable.setModel(model);
        }


    }
    catch(Exception ex){
        JOptionPane.showMessageDialog(this,ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
    }  

【问题讨论】:

  • 您似乎无法给出一个很好的解释,为什么不给出输入数据和预期结果的一个很好的样本呢?
  • 如果您发现自己的问题不清楚,请努力澄清它。我会尝试破译它并给你一个答案,但我敢打赌,如果你成功地把问题说清楚,你就会自己到达那里。
  • 你想要一个内循环一个循环内的循环吗?
  • 也格式化你的代码。
  • 在您的内部循环中,您正在递增 i 并执行

标签: java sql loops arraylist


【解决方案1】:

问题是,我怎样才能继续循环遍历数组列表 关闭和关闭 2 并开始循环遍历 arraylist closing1 从一开始?

我猜你需要的是:

closing1[i%closing1.length].GetDate()== closing[i].GetDate()

【讨论】:

    【解决方案2】:

    根据问题的另一种理解,

    Date date1 = (i < closing1.size()) ? closing1[i].GetDate() : zero;
    date1 == closing[i].getDate();
    

    zero 是“在表中输出为 0”的任何日期

    【讨论】:

    • 我想我需要的是一个嵌套循环?如果关闭1.GetDate == 到关闭.GetDate... 将检查条件,如果不输入0,则将值输出到表中。由于关闭1中只有4个值,因此必须再次循环比较日期再次关闭
    猜你喜欢
    • 2018-12-24
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多