【发布时间】:2011-07-28 16:38:20
【问题描述】:
好的。所以我正在尝试编写一个应用程序,以正确的操作顺序解决问题(即PEMDAS,但没有PE lol)。我可能做错了,但无论如何。我需要帮助的是,作为对数组中每个元素的迭代,如果它是一个运算符,我会删除两个元素(运算符周围的数字,因为我将运算符替换为正确的计算,所以一个包含三个元素的数组,5 +5,将成为一个包含一个元素的数组,10) 这很好,但是 for 语句条件不会更新,所以,换句话说,当我更新数组时,array.length 会变短,但是for-statement 无法识别并继续传递数组的边界,这会导致 outofbounds 错误。最好的解释方法是通过我的代码,所以这里是:
for (i = 0; i < splitEquation.length; i++){
if (splitEquation[i].equals("*")){
splitEquation[i] = Double.toString(Double.parseDouble(splitEquation[i - 1]) * Double.parseDouble(splitEquation[i + 1]));
splitEquation = removeIndex(splitEquation, i - 1);
splitEquation = removeIndex(splitEquation, i + 1);
solution += Double.parseDouble(splitEquation[i - 1]);
}
}
和 removeIndex():
private String[] removeIndex(String [] s, int index){
String [] n = new String[s.length - 1];
System.arraycopy(s, 0, n, 0, index - 1);
System.arraycopy(s, index, n, index - 1, s.length - index);
return n;
}
提前致谢, -埃里克
附:如果您需要澄清我的代码的作用,请告诉我 :)
【问题讨论】:
标签: java arrays exception for-loop