我正在尝试使用ArrayList
中的For loop
从Java
元素中检索某些特定数据。
但每当我运行代码时,它只是跳过循环。
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
。我想知道为什么会这样?
提前感谢您的帮助!
答案 0 :(得分:5)
您需要更改
for(int i=0;i>arrTrans.size(); i++){
要
for(int i=0;i<arrTrans.size(); i++){
arrTrans.size()
是一个集合的大小arrTrans.size()>=0
。然后i
从0
开始,因此您的当前代码不会进入for循环,因为i>arrTrans.size()
不匹配。
编辑:
现在您已将问题编辑到for(int i=0;i<arrTrans.size(); i++)
,如果您仍然遇到同样的问题arrTrans.size()
是0
答案 1 :(得分:0)
for(int i=0;i>arrTrans.size(); i++)
?当然你的意思是 - for(int i=0;i<arrTrans.size(); i++)
。如果arrTrans
的大小为零,则它不会进入循环。
答案 2 :(得分:0)
在for循环的条件部分使用less than
代替greater than
写下这个for(int i=0;i<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);
}
答案 3 :(得分:0)
由于语句i>arrTrans.size()
,它会跳过循环。
i等于0,因此对于要评估的循环,arrTrans.size()必须小于0。
因此,arraylist不能具有负大小
循环被跳过。将i>arrTrans.size()
更改为i<arrTrans.size()
以使其有效。
答案 4 :(得分:0)
更改
for(int i=0;i>arrTrans.size(); i++)
到
for(int i=0;i<arrTrans.size(); i++)
你误解了for循环中间的条件:它并不意味着&#34;虽然我的条件不是是真的&#34;,但它意味着&#34;当我的情况< strong>是 true&#34;
从未使用您输入的内容执行循环。 arrTrans.length
永远不会给你一些低于0的东西,因为ArrayList
的长度为0,如果它是空的。
编辑:如果对于for循环条件不是问题,那么可能是ArrayList的问题。尝试将i<arrTrans.size()
替换为i<arrTrans.toArray().length
,这可能会有所帮助
答案 5 :(得分:0)
实际上,如果你在Arraylist中有一些任何元素,它可能就是你的
// if(arrTrans.get(i).date.equals(sel)){
这种情况并不令人满意,也没有显示任何结果。