Java 扫描仪扫描第一行,仅扫描第二行的第一个输入
我正在创建这段代码,扫描仪应该扫描文本文件中的每个单词,然后继续将它们保存在特定的数组中。但每次扫描仪开始扫描时,它只会到达下一行,并在第一个单词处停止。我不知道到底是什么原因造成的。我使用了一个分隔符,它在逗号“,”之间分隔单词 下面是一段代码:Java 扫描仪扫描第一行,仅扫描第二行的第一个输入,java,Java,我正在创建这段代码,扫描仪应该扫描文本文件中的每个单词,然后继续将它们保存在特定的数组中。但每次扫描仪开始扫描时,它只会到达下一行,并在第一个单词处停止。我不知道到底是什么原因造成的。我使用了一个分隔符,它在逗号“,”之间分隔单词 下面是一段代码: package ex13a; import java.util.Scanner; import java.io.*; /** * * @author Work */ public class Ex13a { static Scanner sca
package ex13a;
import java.util.Scanner;
import java.io.*;
/**
*
* @author Work
*/
public class Ex13a {
static Scanner scan = new Scanner(System.in);
static int[] number = new int[100];
static String[] f_users = new String[100];
static String[] l_users = new String[100];
static String[] passwd = new String[100];
static int i = 0;
static String fullName;
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
String path = "C:\\Users\\Work\\Desktop\\users.txt";
File inFile = new File(path);
Scanner inPut = new Scanner(inFile).useDelimiter(",");
Scanner inPut2 = new Scanner(inFile);
while(inPut.hasNext()){
System.out.println(number[i] = inPut.nextInt());
System.out.println(f_users[i] = inPut.next());
System.out.println(l_users[i] = inPut.next());
System.out.println(passwd[i] = inPut.next());
i++;
}
这让我犯了一个错误:
1
Ahmed
Dhaif
asdf56
Exception in thread "main" java.util.InputMismatchException
2
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at ex13a.Ex13a.main(Ex13a.java:32)
C:\Users\Work\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
逐行抓取,然后围绕逗号拆分行,然后解析返回的字符串
Scanner inPut = new Scanner(inFile);
while(inPut.hasNextLine()){
String [] data = inPut.nextLine().split(",");
System.out.println(Integer.parseInt(data[0]));
number[i] = Integer.parseInt(data[0]); //to add to your arrays
System.out.println(Integer.parseInt(data[1]));
System.out.println(Integer.parseInt(data[2]));
System.out.println(Integer.parseInt(data[3]));
i++;
}
注意,您应该检查数组的大小是否正确,字符串是否为整数。你应该能做到。但这应该让你开始
如果要将值存储在数据结构中,请使用动态的数据结构,而不是数组等固定长度的数据结构。逐行抓取,然后围绕逗号拆分行,然后解析返回的字符串
Scanner inPut = new Scanner(inFile);
while(inPut.hasNextLine()){
String [] data = inPut.nextLine().split(",");
System.out.println(Integer.parseInt(data[0]));
number[i] = Integer.parseInt(data[0]); //to add to your arrays
System.out.println(Integer.parseInt(data[1]));
System.out.println(Integer.parseInt(data[2]));
System.out.println(Integer.parseInt(data[3]));
i++;
}
注意,您应该检查数组的大小是否正确,字符串是否为整数。你应该能做到。但这应该让你开始
如果要将值存储在数据结构中,请使用动态的数据结构,而不是数组等固定长度的数据结构。阅读错误消息。在
nextInt()
方法中引发了异常。对于nextInt()
所以你读的标记不是你想象的那样。您可以将nextInt()
调用替换为其他调用来查看它是什么,然后从那里开始
记录在案,这段代码非常可信
nextInt()
方法中引发了异常。对于nextInt()
所以你读的标记不是你想象的那样。您可以将nextInt()
调用替换为其他调用来查看它是什么,然后从那里开始
记录在案,这段代码非常可信
nextLine()
逐行读取文件,然后使用.split(“,”
解析该行。另外,JavaScript和Java是两种完全独立、不相关的语言,您的问题与Netbeans无关。删除javascript和netbeans标记。它打印值2
,可能来自文本文件第二行的nextInt()
调用,但调用nextInt()
失败,这有点奇怪。但是,如果它打印了由nextInt()
返回的值,它将出现在下一条语句中,这是对next()
的调用,而不是nextInt()
。你确定这就是你正在运行的代码吗?请阅读错误消息,它们会帮助你。为了帮助人们回答问题,如果您也提供了输入数据,这会有所帮助。请使用nextLine()
逐行读取文件,然后使用解析该行。拆分(“,”
)。另外,JavaScript和Java是两种完全独立、不相关的语言,您的问题与Netbeans无关。删除javascript和netbeans标记。它打印值2
,可能来自文本文件第二行的nextInt()
调用,但调用nextInt()
失败,这有点奇怪。但是,如果它打印了由nextInt()
返回的值,它将出现在下一条语句中,这是对next()
的调用,而不是nextInt()
。你确定这就是你正在运行的代码吗?请阅读错误消息,它们会帮助你。为了帮助人们回答,如果你也提供了你的输入数据,那会很有帮助。这是一个值得信赖的代码,因为我已经知道它的内容以及它在未来将如何变化。我用next替换了nextInt,看看它是否是int。令人惊讶的是,它显示了整个文件,但显示了此错误消息:线程“main”java.util.NoSuchElementException中的异常位于中间,后面是其他错误。顺便说一句,下一个预期数字是int.@M.J-没有看到输入数据(输入数据无论如何都是有用的,正如我上面所评论的),根据你的测试结果,我只能猜测下一个问题是什么,但听起来可能是一个文件结束的边界条件。嗯,实际上这听起来像是一个行尾问题,一些不可打印的东西,或者你行尾的一部分没有被识别为空白。试着一个字符一个字符地读取文件的前几行,然后输出字符代码——或者在二进制编辑器中编辑文件——以查找行尾奇怪之处。这是一个值得信赖的代码,因为我已经知道了它的内容以及它在未来将如何变化。我用next替换了nextInt,看看它是否是int。令人惊讶的是,它显示了整个文件,但显示了此错误消息:线程“main”java.util.NoSuchElementException中的异常位于中间,后面是其他错误。顺便说一句,下一个预期数字是int.@M.J-没有看到输入数据(输入数据无论如何都是有用的,正如我上面所评论的),根据你的测试结果,我只能猜测下一个问题是什么,但听起来可能是一个文件结束的边界条件。嗯,实际上这听起来像是一个行尾问题,一些不可打印的东西,或者你行尾的一部分没有被识别为空白。试着读这本书的前几行