[解決済み] java.lang.IndexOutOfBoundsException: インデックスが 1, サイズ: 1
2022-02-13 18:24:11
質問
タイトルにあるように、私の問題は、コンパイル時にスレッド "main" java.lang.IndexOutOfBoundsException で Exception が発生することです。インデックスです。1, Size: 1。以下は、問題が発生している部分です。
編集する
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at pa6.FlightFinder.bestDirectPrice(FlightFinder.java:117)
at pa6.FlightFinder.main(FlightFinder.java:14)
public static ArrayList<String> bestDirectPrice(ArrayList<String> flightList,String city1, String city2) {
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> Price = new ArrayList<String>();
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
return Price;
ネットで解決策を探した結果、配列が小さすぎることが問題であることは間違いないのですが、どうすれば解決できるのかがまだわかりません。上の方のコードで、配列から数字だけを取り出して、新しい配列に入れようとしているのですが。
ArrayList<String> test = new ArrayList<String>(); //Array with list of flights
test.add("Orlando#DesMoines#194.88");
test.add("Portland#Orlando#287.74");
test.add("Buffalo#Boston#299.52");
test.add("Buffalo#Portland#264.80");
test.add("Chicago#Buffalo#223.56");
System.out.println(bestDirectPrice(test,"Buffalo","Orlando"));
そして、私が呼んでいる他のメソッドはこちらです。
public static String getPrice(String price) { //Takes flight description, which is a string, as a parameter and returns price of flight
String[] sArray = price.split("#", -1);
String newPrice = "";
for (int i = 0; i<1; i++)
newPrice = sArray[2];
return newPrice;
}
public static ArrayList<String> directFlights(ArrayList<String> flightList, String city1, String city2) { // Method to create array list containing every direct flight from city1 to city 2
ArrayList<String> list = new ArrayList<String>();
for (int i=0; i<flightList.size(); i++){
String city2a = getDestinationCity(flightList.get(i));
String city1a = getOriginationCity(flightList.get(i));
if (city1a.equals(city1) && city2a.equals(city2)) {
list.add(flightList.get(i));
}
}
return list;
}
しばらくこの問題に行き詰っていたので、何か手助けがあれば非常にありがたいです。
編集する
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at pa6.FlightFinder.bestDirectPrice(FlightFinder.java:117)
at pa6.FlightFinder.main(FlightFinder.java:14)
解決方法は?
あなたのforループはlistではなくflightListに対してです。 繰り返しごとに、新しい要素を追加するのではなく、新しい値をリストに再割り当てしているのです。
を変更してみてください。
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
になります。
list = directFlights(flightList, city1, city2);
for (int i=0; i<list.size(); i++) {
Price.add(getPrice(list.get(i)));
}
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み】Javaの".class expected "について
-
[解決済み】ArrayListの初期サイズについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hibernateでResultSetを抽出できない。
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】破損したjarファイル
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み】Javaの".class expected "について
-
[解決済み] java.lang.ArrayIndexOutOfBoundsExceptionが発生する原因とその対策について教えてください。