我正在开发一个Java项目,由于某些原因,我无法理解为什么我的代码没有经过 for 循环。
float gain = 0;
float loss = 0;
for(int i = this.currentLine - 14; i < this.currentLine; i ++){
StockLine pd = (StockLine) this.rows.get(i);
gain += pd.getGain();
loss += pd.getLoss();
System.out.println(i);
}
System.out.println("WHY ISN'T THIS BEING PRINTED");
如果我要移除这三行,它会按预期工作:
StockLine pd = (StockLine) this.rows.get(i);
gain += pd.getGain();
loss += pd.getLoss();
this.rows 是一个包含大量对象(StockLine)的ArrayList。大约200个元素。
Java是否限制了ArrayList可以容纳的对象数量?
代码编译成功,没有任何警告或错误。所以我不知道这里发生了什么。
非常感谢任何协助。
提前谢谢。
艾哈迈德
修改
感谢大家的快速回复。以下是当前的课程。该项目的唯一其他部分是逐行读取文件并调用下面的 file()方法。
方法 getGain()和 getLoss()只返回一个浮点数。
这是 ReadStock 或此
类package nyc.amin;
import java.util.ArrayList;
public class ReadStock implements ReadFileInterface
{
private int currentLine = 0;
private ArrayList rows = new ArrayList();
@Override
public void file(String line)
{
if(this.currentLine == 0){
this.currentLine ++;
return;
}
String[] row = line.split(",");
StockLine currentDay = new StockLine();
currentDay.setDate(row[0]);
currentDay.setTime(row[1]);
currentDay.setOpen(row[2]);
currentDay.setHigh(row[3]);
currentDay.setLow(row[4]);
currentDay.setClose(row[5]);
currentDay.setVolume(row[6]);
if(this.currentLine >= 2){
StockLine previousDay = (StockLine) this.rows.get(this.rows.size() - 1);
currentDay.setGainOrLoss(currentDay.getClose() - previousDay.getClose());
if(this.currentLine == 15){
float gain = 0;
float loss = 0;
for(int i = this.currentLine - 14; i < this.currentLine; i ++){
StockLine pd = (StockLine) this.rows.get(i);
gain += pd.getGain();
loss += pd.getLoss();
System.out.println(i);
}
System.out.println("WHY ISN'T THIS BEING PRINTED");
}
}
this.rows.add(currentDay);
this.currentLine ++;
}
@Override
public void end()
{
//System.out.println("----------------");
//System.out.println(this.rows.size());
}
}
答案 0 :(得分:0)
当循环到达currentLine时,我非常愚蠢,它并不存在于ArrayList中。它不会抛出错误或异常。
这条线只需要改变:
for(int i = this.currentLine - 14; i < this.currentLine; i ++){
要
for(int i = this.currentLine - 14; i < this.currentLine - 1; i ++){
感谢所有回复的人。
答案 1 :(得分:-1)
每次在循环周围评估this.currentline。如果(副作用) 当前行更改,循环可能永远不会终止。