我有一堂课,他应该打开一个文件,里面有很多问题,还有一个答案。问题是当它在ArrayList中写入时。我试过所有类型的ArrayLists,LinkedLists,甚至向量。文件的第一部分,比如问题和答案,都是没有问题的。但是,当我想把这些答案存储在一个列表中,这样我就可以将这个列表保存在一个对象中,它就不能工作了。
如果有人可以帮助这一点,或者知道更好的方法,那么将一个未知的字符串保存到一个对象列表中,这将是史诗。
文件格式是:
A question,3,yes,no,maybe
Another question,4,yes,maybe,no,why not我的班级:
public class GetSurvey {
public static String intrebare;
static int raspunsuri;
public static int i = 1;
static String holder;
//static String[] rasp = new String[250];
static List<String> rasp = new LinkedList<String>();
public static SurveyClass[] obj = new SurveyClass[250];
public static void loadSurvey()
{
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+File.separator+"Survey.dat");
if(!file.exists()){
try {
file.createNewFile();
}
catch (IOException e) {
e.printStackTrace();
}
}
if(file.exists()){
try {
Scanner read = new Scanner(file);
read.useDelimiter(",");
while (read.hasNext())
{
intrebare = read.next();
String raspunsuri1 = read.next();
//Log.w("Date",String.valueOf(raspunsuri));
//obj[i].setNrRasp(raspunsuri);
for(int j = 0;j < 3;j++)
{
Log.w("Date",String.valueOf(j));
rasp.add(j,read.next());
}
String[] stringArr = rasp.toArray(new String[rasp.size()]);
Log.w("Date",stringArr[i]);
//obj[i].setRaspunsuri(rasp);
rasp.clear();
i++;
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}发布于 2014-07-25 10:26:56
您在循环中使用了3次read.next(),这意味着您已经超过了输入的末尾,因此是NoSuchElementException。
只使用它一次,并将其赋值给循环中的局部变量,因此您可以在稍后的循环中再次使用该值。
发布于 2014-07-25 10:56:43
我建议您在read.next()循环中只执行一个while(read.hasNext())。分析read元素,执行必要的任务,然后重新运行循环,直到while(read.hasNext())失败。这样,您就可以确保不会执行超出列表大小的读取操作。
https://stackoverflow.com/questions/24953353
复制相似问题