【发布时间】:2019-09-07 08:53:18
【问题描述】:
我在尝试创建一定长度的数组时遇到了一些令人困惑的行为。长度由函数 getTermNums 中读取的文件获得。当我尝试创建这种大小的数组时,我的代码以奇怪的顺序运行,我的 i 值是倾斜的,并且代码通常不会按预期运行。当我改为创建一个设置整数数量的数组时,代码会按预期运行而不会出错。
double[] terms;
int numTerms = getNumTerms(lines[0]);
terms = new double[numTerms];
int i = 1;
for (i = 1; i<terms.length; i++){
//terms[i] = calculateTerm(T, lines[i]);
}
以上代码运行不正确。
double[] terms;
int numTerms = getNumTerms(lines[0]);
int myNum = 200;
terms = new double[myNum];
int i = 1;
for (i = 1; i<terms.length; i++){
//terms[i] = calculateTerm(T, lines[i]);
以上代码运行正确
int getNumTerms(String line){
int i = 60;
int j = 0;
char[] word;
word = new char[4];
int numTerms;
int numTermLen = 0;
while(new String(word).compareTo("TERM") != 0){
for (j=0; j<4; j++){
word[j] = line.charAt(i + j);
}
i++;
}
j = i - 3;
while( new Character(line.charAt(j)).equals(' ') == false){
numTermLen++;
j--;
}
j++;
println("i in here: ", i);
numTerms = Integer.parseInt(line.substring(j, j + numTermLen));
return numTerms;
}
这是我调用的函数,用于读取第一个示例中数组大小的 numterms,但无法正常工作。
当我使用函数调用来设置数组 terms[] 的大小时,i 从某个值开始,例如 380,并且通过数组 lines[] 的迭代从数组中间的某个位置开始。 当我使用整数 myNum 来设置数组 terms[] 的大小时,i 从 1 开始,并且通过数组 lines[] 的迭代按照预期从第一行开始。
感谢任何解释!我是 java 编码的新手,对这个错误的来源感到困惑。 提前致谢。
【问题讨论】:
-
您可以发布您正在解析的文本示例吗?解析
numTerms整数值的方式可能存在问题。 -
你用过调试器吗?
标签: java processing