【问题标题】:My Java code doesn't enter to For loop to retrieve ArrayList elements我的 Java 代码没有进入 For 循环来检索 ArrayList 元素
【发布时间】:2014-08-14 12:12:07
【问题描述】:

我正在尝试使用Java 中的For loopArrayList 元素中检索一些特定数据。

但每当我运行代码时,它都会跳过循环。

    String sel=(String)jComboBox2.getSelectedItem();

    for(int i=0;i<arrTrans.size(); i++){
        if(arrTrans.get(i).date.equals(sel)){
        descView.setText(arrTrans.get(i).description);
        typeView.setText(arrTrans.get(i).type);
        amountView.setText(arrTrans.get(i).amount);
                }

在调试过程中,我跟踪arrTrans.size() 结束它不为零,因为我不断添加新的Lists。我想知道为什么会这样?

提前感谢您的帮助!

【问题讨论】:

    标签: java for-loop arraylist


    【解决方案1】:

    你需要改变

    for(int i=0;i>arrTrans.size(); i++){
    

    for(int i=0;i<arrTrans.size(); i++){
    

    arrTrans.size() 是集合的大小,所以arrTrans.size()&gt;=0。然后i0 开始,因此您当前的代码不会进入for 循环,因为i&gt;arrTrans.size() 不匹配。

    编辑:

    现在您已将您的问题编辑到for(int i=0;i&lt;arrTrans.size(); i++),如果您仍然有同样的问题,肯定arrTrans.size()0

    【讨论】:

      【解决方案2】:

      改变

      for(int i=0;i>arrTrans.size(); i++)
      

      for(int i=0;i<arrTrans.size(); i++)
      

      您误解了 for 循环中间的条件:它的意思不是“虽然我的条件 不是为真”,它的意思是“虽然我的条件 为真"

      你输入的内容永远不会执行循环。 arrTrans.length 永远不会给你低于 0 的东西,因为如果 ArrayList 为空,它的长度就是 0。

      编辑:如果不是 for 循环条件的问题,则可能是 ArrayList 的问题。尝试将i&lt;arrTrans.size() 替换为i&lt;arrTrans.toArray().length,它可能会有所帮助

      【讨论】:

      • 是的,你是对的!我改变了它,但没有机会!仍然遇到同样的问题。
      • ArrayList 也可能有问题。请参阅我对我的答案的编辑。我知道它应该是相同的输出...
      【解决方案3】:

      在 for 循环的条件部分使用 less than 代替 greater than 写这个for(int i=0;i&lt;arrTrans.size(); i++){

      像这样写整个代码

      String sel=(String)jComboBox2.getSelectedItem();
      
          for(int i=0;i<arrTrans.size(); i++){   //change is needed just here
              if(arrTrans.get(i).date.equals(sel)){
              descView.setText(arrTrans.get(i).description);
              typeView.setText(arrTrans.get(i).type);
              amountView.setText(arrTrans.get(i).amount);
                      }
      

      【讨论】:

        【解决方案4】:

        由于i&gt;arrTrans.size() 语句,它跳过了循环。 i 等于 0,因此要评估的循环 arrTrans.size() 必须小于 0。 数组列表的大小不能为负,因此 循环被跳过。更改:i&gt;arrTrans.size()i&lt;arrTrans.size() 以使其工作。

        【讨论】:

          【解决方案5】:

          for(int i=0;i&gt;arrTrans.size(); i++) ?.你肯定是说-for(int i=0;i&lt;arrTrans.size(); i++)。如果arrTrans的大小为零,则不会进入循环。

          【讨论】:

          • arraylist的大小可以为零。
          • @TomJonckheere - 我的错,我的意思是不同的。谢谢指正。
          【解决方案6】:

          实际上,如果您在 Arraylist 中有一些元素,它可能不会跳过,这可能是您的

          //if(arrTrans.get(i).date.equals(sel)){

          此条件不满足,不显示任何结果。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-21
            • 2016-04-27
            • 2012-10-09
            • 2011-09-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多