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()
调用替换为其他调用来查看它是什么,然后从那里开始

记录在案,这段代码非常可信

  • 循环检查“是否有任何令牌”,然后假设它是一个 整数
  • 您假设,如果有1个令牌,那么在每次循环迭代之后,还会有3个令牌

  • 没有对条目数的保护,您假定它将读取错误消息。在
    nextInt()
    方法中引发了异常。对于
    nextInt()

    所以你读的标记不是你想象的那样。您可以将
    nextInt()
    调用替换为其他调用来查看它是什么,然后从那里开始

    记录在案,这段代码非常可信

  • 循环检查“是否有任何令牌”,然后假设它是一个 整数
  • 您假设,如果有1个令牌,那么在每次循环迭代之后,还会有3个令牌

  • 条目数不受保护,您假定将使用
    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-没有看到输入数据(输入数据无论如何都是有用的,正如我上面所评论的),根据你的测试结果,我只能猜测下一个问题是什么,但听起来可能是一个文件结束的边界条件。嗯,实际上这听起来像是一个行尾问题,一些不可打印的东西,或者你行尾的一部分没有被识别为空白。试着读这本书的前几行