如果我在我的 arrayList 中搜索第 5 项,我还想获得第 4 项和第 6 项。最终的 if 语句中提供了此代码,并定义为 (i - 1) 和 (i + 1)。到目前为止,这是我的代码:
import java.util.ArrayList;
public class PlanetsList {
public static void main(String args[]) {
ArrayList<String> planets = new ArrayList<String>();
String names[] = { "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranis", "Neptune", "Pluto"};
for (int i = 0, n = names.length; i < n; i++) {
planets.add(names[i]);
String value = (String) planets.get(i);
if(value.contains("Mars")) {
String newNum = value.replace(value, "Red planet ");
planets.set(i,newNum);
}
if(value.contains("Uranis")) {
String wordBefore = (String) planets.get(i-1);
String wordAfter = (String) planets.get(i+1);
String newNum = value.replace(value, "Uranus ");
planets.set(i,newNum);
System.out.println("This is the word before " + wordBefore);
System.out.println("This is the word after " + wordAfter);
planets.remove(i-1);
}
}
System.out.println(planets);
}
}
有了这个我得到一个 indexoutofbounds 异常,这显然是由最终 if 语句中的 wordAfter 行引起的,并且因为 for 循环没有遍历整个 arrayList。最后的 if 语句不需要和另一个 if 语句在同一个 for 循环中,但如果它在不同的循环中,replace 方法必须能够将被替换的单词放回正确的位置。
问候