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メソッドは置換された単語を正しい位置に戻すことができる必要があります。
よろしく