我試圖在嵌套的 ArrayList 中查找值的索引,但我需要找到第一個 ArrayList 的位置。運行此代碼時收到錯誤訊息:
public int findCity(String city) {
city = "\"" city "\"";
System.out.println(cityArray.size());
for (List<String> value : cityArray) {
String newCity = value.get(1);
if (newCity == city) return cityArray.indexOf(value);
}
return -1;
}
問題發生在 for 回圈之后的行中:
String newCity = value.get(1);
它告訴我索引 1 超出了長度 1 的范圍。非常感謝任何幫助!
我發現了問題:我正在使用 nextLine() 讀取 csv 檔案,并且每次有空間時它都會創建一個新陣列。這對我來說是一個巨大的疏忽,但現在我可以開始解決問題了。
再次抱歉給您帶來的不便。
uj5u.com熱心網友回復:
您正在混淆 cityArray.size() 和 cityArray.get(1).size(),它們可能完全不同。
(你也在用 == 比較字串,這很可能會導致災難。使用 .equals。)
uj5u.com熱心網友回復:
我認為問題是您從 1 開始計數,但 ArrayList 從 0 開始計數。這就是索引越界的原因。
你可以試試這個:
String newCity = value.get(0);
uj5u.com熱心網友回復:
下面的代碼可以幫助你,雖然我不明白你的問題。
public static void main(String[] args) {
List<String> list1 = Arrays.asList(new String[]{"A","B"});
List<String> list2 = Arrays.asList(new String[]{"Y","Z"});
List<List<String>> cityArray = new ArrayList<>(2);
cityArray.add(list1);
cityArray.add(list2);
System.out.println(findCity("Z", cityArray));
}
public static int findCity(String city, List<List<String>> cityArray) {
System.out.println(cityArray.size());
for (List<String> value : cityArray) {
for(String newCity :value) {
if (newCity.equalsIgnoreCase(city)) {
return cityArray.indexOf(value);
}
}
}
return -1;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/352937.html
標籤:爪哇
