当程序应该达到中断时,我不断收到此错误:
"线程中的异常" main" java.lang.IndexOutOfBoundsException:索引:2,大小:2 at java.util.LinkedList.checkElementIndex(LinkedList.java:555) 在java.util.LinkedList.get(LinkedList.java:476) 在Glosor.main(Glosor.java:65)"
这是代码:
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.io.*;
public class Glosor {
public static void main(String[] args) throws IOException {
List<String> gloslista1 = new LinkedList<String>(Arrays.asList());
List<String> gloslista2 = new LinkedList<String>(Arrays.asList());
String inputStr1 = JOptionPane.showInputDialog(null,
"**********************************" + "\n\n" +
"1. Skapa glosövning" + "\n\n" +
"2. Starta glosövning" + "\n\n" +
"3. Avsluta" + "\n\n" +
"**********************************");
int input1 = Integer.parseInt(inputStr1);
switch (input1) {
case 1:
String övningsnamn = JOptionPane.showInputDialog(null, "Vad heter övningen?");
String språk1 = JOptionPane.showInputDialog(null, "Språk 1?");
String språk2 = JOptionPane.showInputDialog(null, "Språk 2?");
while (true) {
String glosa1 = JOptionPane.showInputDialog(null, "Skriv in glosa på " + språk1 + "\n\n" +
"När du är klar skriv klar i rutan");
if(glosa1.equals("klar")) {
break;
//this is where i get the error message
}
else {
String glosa2 = JOptionPane.showInputDialog(null, "Skriv in glosa på " + språk2);
gloslista1.add(glosa1);
gloslista2.add(glosa2);
}
}
String filnamn1 = "svenskaord";
String filnamn2 = "franskaord";
PrintWriter utström1 = new PrintWriter
(new BufferedWriter
(new FileWriter(filnamn1)));
//Skapar en text fil för glosorna på svenska
PrintWriter utström2 = new PrintWriter
(new BufferedWriter
(new FileWriter(filnamn2)));
//Skapar en text fil för glosorna på franska
for(int i = 0; i<=gloslista1.size(); i++) {
utström1.println(gloslista1.get(i));
utström2.println(gloslista2.get(i));
//Skriver in glosor i text filerna
}
答案 0 :(得分:0)
循环应该是
for(int i = 0; i<=gloslista1.size()-1; i++)
表示它应该以{{1}}结尾。堆栈跟踪表示列表中有2个元素,因此列表中有2个索引,即gloslista1.size()-1
,但您尝试访问索引{{1}在列表中不存在的例外情况。
答案 1 :(得分:0)
这个for循环超出范围。
for(int i = 0; i<=gloslista1.size(); i++) {
utström1.println(gloslista1.get(i));
utström2.println(gloslista2.get(i));
//Skriver in glosor i text filerna
}
当gloslista1.get(i)
等于i
时,gloslista1.size()
执行gloslista1.size()-1
超出界限,因为列表索引从0变为for(int i = 0; i<gloslista1.size(); i++)
。 for循环需要像singhakash建议的那样,或更像惯用语:
app.controller('MainController', ['$scope','places', function($scope,places) {
$scope.mapCenter = {
lat: 40.741934,
lng: -74.004897,
zoom: 17
};
var geodata=new Array();
places.success(function(data) {
geodata = data;
console.log('inside'+geodata); //You can receive here data
});
// console.log(geodata); Because places.success is asycnronous, its the empty array not null
}]);