使用扫描器从文件中读取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++;
}