首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在我的课堂上会有NoSuchElementException错误

为什么我在我的课堂上会有NoSuchElementException错误
EN

Stack Overflow用户
提问于 2014-07-25 10:13:44
回答 2查看 112关注 0票数 0

我有一堂课,他应该打开一个文件,里面有很多问题,还有一个答案。问题是当它在ArrayList中写入时。我试过所有类型的ArrayLists,LinkedLists,甚至向量。文件的第一部分,比如问题和答案,都是没有问题的。但是,当我想把这些答案存储在一个列表中,这样我就可以将这个列表保存在一个对象中,它就不能工作了。

如果有人可以帮助这一点,或者知道更好的方法,那么将一个未知的字符串保存到一个对象列表中,这将是史诗。

文件格式是:

代码语言:javascript
复制
A question,3,yes,no,maybe
Another question,4,yes,maybe,no,why not

我的班级:

代码语言:javascript
复制
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();
            }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-25 10:26:56

您在循环中使用了3次read.next(),这意味着您已经超过了输入的末尾,因此是NoSuchElementException。

只使用它一次,并将其赋值给循环中的局部变量,因此您可以在稍后的循环中再次使用该值。

票数 0
EN

Stack Overflow用户

发布于 2014-07-25 10:56:43

我建议您在read.next()循环中只执行一个while(read.hasNext())。分析read元素,执行必要的任务,然后重新运行循环,直到while(read.hasNext())失败。这样,您就可以确保不会执行超出列表大小的读取操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24953353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档