使用扫描器从文件中读取java

使用扫描器从文件中读取java,java,try-catch,readfile,Java,Try Catch,Readfile,我一直在尝试使用扫描仪读取我的文件 我得到的错误是NoTouchElementException:找不到行 所有数组都是字符串数组,用于存储文件中的信息。 正在使用的分隔符是“;” 如果我使用上面的代码,我将始终得到NoTouchElementException:NoLineFound 现在我使用下面的代码。。所有内容都会打印得很好,没有错误 private void choice() { File file = new File("info.txt"); tr

我一直在尝试使用扫描仪读取我的文件

我得到的错误是
NoTouchElementException:找不到行
所有数组都是字符串数组,用于存储文件中的信息。 正在使用的分隔符是“;”

如果我使用上面的代码,我将始终得到
NoTouchElementException:NoLineFound

现在我使用下面的代码。。所有内容都会打印得很好,没有错误

private void choice() {
        File file = new File("info.txt");

        try {
            Scanner read = new Scanner(file);
            read.useDelimiter(";");
            while (read.hasNextLine()){
                realName = read.nextLine();
                System.out.println(realName);
            }
        }
        catch ......
    }
每样东西都会一行一行地印好。不会有任何问题,但这不是我想要的。我想将它们存储在数组中

在编码的第一部分,我有没有做错什么

我还使用
read.hasNext()
而不是
read.hasNextLine()
。 但也有错误

任何善良的灵魂都能帮上忙吗

==编辑 很抱歉我没有在info.txt中显示数据,它是这样的

Mr Dash;dash;dash123;Dash Lane 1;414924934;VISA;1219240241029021092
Mr Long;long;long123;Long Lane 1;3924929;MASTERCARD;123902039109329

每次
read.nextLine()
之前,必须选中
read.hasNextLine()
,否则可能会出现异常

可能在
循环中的某个地方,而
循环中,您正在执行
读取.nextLine()
并且没有下一行(达到EOF)

while(read.hasNextLine()){

对于(int i=0;i您正在循环中调用
hasNextLine
一次和
nextLine
多次,因此如果它达到
EOF
,则可能会出错。 由于您使用的是分隔符,我认为您试图在一次迭代中从一行中读取每个单词。请尝试以下方法:

int i=0;
while (read.hasNextLine()){                
    realName[i] = read.next();
    userName[i] = read.next();
    password[i] = read.next();
    address[i] = read.next();
    contact[i] = read.next();
    cardType[i] = read.next();
    cardNo[i] = read.next();
    i++;               
}

你能显示info.txt的内容吗?我自己解决了。谢谢你的帮助!是的。这是一行带分隔符的代码。我使用此代码时出错。线程“main”java.util.NoSuchElementException中出现异常。错误在cardType[I].我猜这个错误发生在它不能从中得到任何信息时?是因为在最后一行没有“?因此它同时占用了第一个卡号和下一个实名,并将它们放在变量中?我将它们打印出来并进行了测试。如果没有其他内容可读取,是否仍需要要求迭代器停止?如果我只执行System.out.println(read.next()),我认为在while循环中会出现错误没有错误,很好。当我使用这个数组来存储信息时,错误再次出现。。Sigh@John如果您向我们展示文件的内容,我们会更好地提供帮助。编辑您的问题,并从您的文件中发布几行内容,以便我们可以查看文件的格式,并帮助您查找错误原因。
      while (read.hasNextLine()){
            for(int i=0; i<=10; i++){
                    realName[i] = read.nextLine();
                    userName[i] = read.nextLine(); // check for read.hasNextLine();
                    password[i] = read.nextLine(); // check for read.hasNextLine();
                    address[i] = read.nextLine(); // check for read.hasNextLine();
                    contact[i] = read.nextLine(); // check for read.hasNextLine();
                    cardType[i] = read.nextLine(); // check for read.hasNextLine();
                    cardNo[i] = read.nextLine(); // check for read.hasNextLine();
           }
      }
int i=0;
while (read.hasNextLine()){                
    realName[i] = read.next();
    userName[i] = read.next();
    password[i] = read.next();
    address[i] = read.next();
    contact[i] = read.next();
    cardType[i] = read.next();
    cardNo[i] = read.next();
    i++;               
}