Java 将字符串从文件读取到ArrayList,然后转换为数组
目标是将每个单词从一个大文件(多行上的多个单词和数字)读取到一个二维数组。为此,我尝试将文件中的每个单词读取到ArrayList,而不是将ArrayList转换为2d数组。但是,我得到的2d数组中每个元素的输出是文件名 文件的以下部分: 艾伦,小姐。伊丽莎白·沃尔顿女Java 将字符串从文件读取到ArrayList,然后转换为数组,java,arrays,arraylist,java.util.scanner,Java,Arrays,Arraylist,Java.util.scanner,目标是将每个单词从一个大文件(多行上的多个单词和数字)读取到一个二维数组。为此,我尝试将文件中的每个单词读取到ArrayList,而不是将ArrayList转换为2d数组。但是,我得到的2d数组中每个元素的输出是文件名 文件的以下部分: 艾伦,小姐。伊丽莎白·沃尔顿女 11艾利森,主人。哈德逊·特雷弗男性 10艾莉森,小姐。海伦·罗兰女 10埃里森,哈德森先生约书亚·克雷顿男30 10 Allison,Hudson J C夫人(Bessie Waldo Daniels)女25 我的代码: pub
11艾利森,主人。哈德逊·特雷弗男性
10艾莉森,小姐。海伦·罗兰女
10埃里森,哈德森先生约书亚·克雷顿男30
10 Allison,Hudson J C夫人(Bessie Waldo Daniels)女25 我的代码:
public class Titanic {
private final static String fileName = "/Users/Andrew/Desktop/titanic.txt";
public static void main(String[] args) {
Scanner s1 = new Scanner (fileName);
ArrayList<String> list = new ArrayList<String>();
while (s1.hasNext()) {
list.add(s1.next());
}
s1.close();
String[][] data = new String [list.size()][9];
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < 9; j++) {
data[i][j] = list.get(i);
}
}
System.out.println(data[0][0]);
}
}
公共级泰坦尼克号{
私有最终静态字符串fileName=“/Users/Andrew/Desktop/titanic.txt”;
公共静态void main(字符串[]args){
扫描仪s1=新扫描仪(文件名);
ArrayList=新建ArrayList();
while(s1.hasNext()){
list.add(s1.next());
}
s1.关闭();
字符串[][]数据=新字符串[list.size()][9];
对于(int i=0;i
您需要将文件
传递给您的扫描仪
。您可以使用“user.home”获取主文件夹。我会读一个列表
(并使用),您可以使用和。差不多
private final static String fileName = "Desktop/titanic.txt";
public static void main(String[] args) {
List<String[]> list = new ArrayList<>();
try (Scanner s1 = new Scanner(new File(System.getProperty("user.home"),
fileName))) {
while (s1.hasNextLine()) {
list.add(s1.nextLine().split("\\s+"));
}
} catch (Exception e) {
e.printStackTrace();
}
int pos = 0;
String[][] data = new String[list.size()][];
for (String[] arr : list) {
data[pos++] = arr;
}
System.out.println(Arrays.deepToString(data));
}
private final static String fileName=“Desktop/titanic.txt”;
公共静态void main(字符串[]args){
列表=新的ArrayList();
try(Scanner s1=new Scanner(新文件(System.getProperty(“user.home”),
(文件名){
while(s1.hasNextLine()){
list.add(s1.nextLine().split(\\s+));
}
}捕获(例外e){
e、 printStackTrace();
}
int pos=0;
字符串[][]数据=新字符串[list.size()][];
for(字符串[]arr:list){
数据[pos++]=arr;
}
System.out.println(数组.deepToString(数据));
}
更改
扫描仪s1=新扫描仪(文件名)在这种情况下,您要向函数传递一个字符串,需要传递一个文件。
到
Scanner s1=新扫描仪(新文件(文件名))您读取这些文件的格式有点混乱。您不保证在所有条目中都有9个令牌;在你的最后一个案例中,你有12个。这很有效,谢谢。我明白为什么我现在能得到那个结果了。