【发布时间】:2017-06-13 09:39:26
【问题描述】:
我正在创建此代码,其中扫描仪应扫描文本文件中的每个单词,然后继续将每个单词保存在特定数组中。但是每次扫描仪开始扫描时,它只会到达下一行并在第一个单词处停止。我不知道究竟是什么原因造成的。我正在使用分隔符来分隔逗号“,”之间的单词。
这是一段代码:
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)
【问题讨论】:
-
使用
nextLine()逐行读取文件,然后使用.split(",")解析该行。此外,JavaScript 和 Java 是两种完全独立、不相关的语言,您的问题与 Netbeans 无关。删除 javascript 和 netbeans 标签。 -
它打印值
2有点奇怪,大概来自文本文件第二行的nextInt()调用,但它在调用nextInt()时失败。但是,如果它打印nextInt()返回的值,它将在下一条语句中,即对next()的调用,而不是nextInt()。您确定这是您正在运行的代码吗? -
阅读错误信息,它们会为您提供帮助。为了帮助人们回答,如果您也提供输入数据会有所帮助。
标签: java