我正在尝试使用字符串标记器将数据从文件导入数组。
文件中的数据格式为
AA,BB,CC
AA,BB,CC
但我一直收到错误
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at java.util.StringTokenizer.nextElement(StringTokenizer.java:407)
at main.main(main.java:36)
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.StringTokenizer;
public class main {
public static void main(String[] args) throws FileNotFoundException {
Scanner input;
String line;
int x=0;
String [] cName = new String [100];
String [] cMascot = new String [100];
String [] cAlias = new String [100];
input = new Scanner(new File("test.txt"));
while(input.hasNextLine()) {
line = input.nextLine();
StringTokenizer strings = new StringTokenizer(line,",");
while (strings.hasMoreElements()) {
cName[x] = strings.nextElement().toString();
cMascot[x] = strings.nextElement().toString();
cAlias[x] = strings.nextElement().toString();
x++;
}
}
}
}
所以任何帮助都会受到赞赏。我不能使用数组列表,以便超出上下文
答案 0 :(得分:2)
你不能在while语句中多次调用.nextElement(); 对于他们每个人.hasNextLine()必须被称为
答案 1 :(得分:1)
我建议您使用readLine
和split
...
public static void main(String[] args) throws FileNotFoundException {
String line;
int x=0;
String [] cName = new String [100];
String [] cMascot = new String [100];
String [] cAlias = new String [100];
try (BufferedReader input = new BufferedReader(new FileStreamReader("test.txt"))) {
while ((line = input.readLine())!=null) {
cName[x] = line.split(",")[0];
cMascot[x] = line.split(",")[1];
cAlias[x] = line.split(",")[2];
x++;
}
}
}
答案 2 :(得分:0)
您也可以使用以下代码:
public static void main(String[] args) throws FileNotFoundException {
Scanner input;
String line;
String cMascot = null;
String cAlias = null;
String cName = null;
input = new Scanner(new File("test.txt"));
while (input.hasNextLine()) {
line = input.nextLine();
StringTokenizer strings = new StringTokenizer(line, ",");
while (strings.hasMoreElements()) {
cName = strings.nextToken();
cMascot = strings.nextToken();
cAlias = strings.nextToken();
System.out.println("cName :" + cName);
System.out.println("cMascot :" + cMascot);
System.out.println("cAlias :" + cAlias);
}
}
}