使用 StringTokenizer 将文件读入 Java
Reading a file into Java using StringTokenizer
我正在尝试完成一项非常简单的任务,但没有得到我想要的结果。我有一个文本文件,其名称在多行上用逗号分隔,我想将该信息存储在一维数组中。当我 运行 我的代码并尝试打印数组以确保我的信息被记录时,控制台只打印出文本文件的最后一行。我的代码有什么问题?我试过玩弄它,但没有找到解决问题的方法。信息是否被覆盖?
import java.util.*;
public class Tokens {
public static TextFileInput myFile;
public static StringTokenizer myTokens;
public static String name;
public static String[] names;
public static String line;
public static void main(String[] args) {
myFile = new TextFileInput("namesofstudents.txt");
while ((line = myFile.readLine())!= null) {
int i=0;
myTokens = new StringTokenizer(line, ",");
names = new String[myTokens.countTokens()];
while (myTokens.hasMoreTokens()){
names[i] = myTokens.nextToken();
i++;
}
}
for (int j=0;j<names.length;j++){
System.out.println(names[j]);
}
}
}
输入示例:
Mark, Joe, Bob
James, Jacob, Andy, Carl
输出:
James
Jacob
Andy
Carl
代码在每一行的开头将 i
初始化为 0
。在 运行.
的开头执行此操作
考虑使用 ArrayList,这会让生活更轻松...
List<String> names = new ArrayList<>();
while ((line = myFile.readLine())!= null) {
myTokens = new StringTokenizer(line, ",");
while (myTokens.hasMoreTokens()){
names.add(myTokens.nextToken());
}
}
System.out.println(names);
您正在重新开始计数并在每一行重写 names
。
尝试将 names
创建为 ArrayList
。
ArrayList<String> names;
像这样在第一个循环之外初始化一次:
names = new ArrayList<String>();
然后,每次您通常将名称放入数组时,请替换此行:
names[i] = myTokens.nextToken();
有:
names.add(myTokens.nextToken());
我正在尝试完成一项非常简单的任务,但没有得到我想要的结果。我有一个文本文件,其名称在多行上用逗号分隔,我想将该信息存储在一维数组中。当我 运行 我的代码并尝试打印数组以确保我的信息被记录时,控制台只打印出文本文件的最后一行。我的代码有什么问题?我试过玩弄它,但没有找到解决问题的方法。信息是否被覆盖?
import java.util.*;
public class Tokens {
public static TextFileInput myFile;
public static StringTokenizer myTokens;
public static String name;
public static String[] names;
public static String line;
public static void main(String[] args) {
myFile = new TextFileInput("namesofstudents.txt");
while ((line = myFile.readLine())!= null) {
int i=0;
myTokens = new StringTokenizer(line, ",");
names = new String[myTokens.countTokens()];
while (myTokens.hasMoreTokens()){
names[i] = myTokens.nextToken();
i++;
}
}
for (int j=0;j<names.length;j++){
System.out.println(names[j]);
}
}
}
输入示例:
Mark, Joe, Bob
James, Jacob, Andy, Carl
输出:
James
Jacob
Andy
Carl
代码在每一行的开头将 i
初始化为 0
。在 运行.
考虑使用 ArrayList,这会让生活更轻松...
List<String> names = new ArrayList<>();
while ((line = myFile.readLine())!= null) {
myTokens = new StringTokenizer(line, ",");
while (myTokens.hasMoreTokens()){
names.add(myTokens.nextToken());
}
}
System.out.println(names);
您正在重新开始计数并在每一行重写 names
。
尝试将 names
创建为 ArrayList
。
ArrayList<String> names;
像这样在第一个循环之外初始化一次:
names = new ArrayList<String>();
然后,每次您通常将名称放入数组时,请替换此行:
names[i] = myTokens.nextToken();
有:
names.add(myTokens.nextToken());