java—使用scanner将文件中的字符串输入拆分为数组

2vuwiymt  于 2021-07-12  发布在  Java
关注(0)|答案(3)|浏览(560)

我正在读取的文本文件如下所示:

pizza, fries, eggs.
1, 2, 4.

我正在使用scanner类扫描这个.txt文件,我想将输入插入arraylist。我知道有一种方法可以拆分字符串并使用 "," 作为一个分隔符,但我似乎找不到如何以及在哪里应用这个。注:以下为 . 用作自己的分隔符,以便扫描程序知道需要检查下一行并将其添加到不同的arraylist。
下面是我在arraylist设置类中的相应代码:

public class GrocerieList {

    static ArrayList<String> foodList = new ArrayList<>();
    static ArrayList<String> foodAmount = new ArrayList<>();
}

下面是类扫描.txt输入的代码:

public static void readFile() throws FileNotFoundException {
        Scanner scan = new Scanner(file);
        scan.useDelimiter("/|\\.");
        scan.nextLine(); // required because there is one empty line at .txt start

        if(scan.hasNext()) {
            GrocerieList.foodList.add(scan.next());
            scan.nextLine();
        }
        if(scan.hasNext()) {
            GrocerieList.foodAmount.add(scan.next());
            scan.nextLine();
        }
    }

我在哪能分线?怎么做?也许我的方法有缺陷,我需要改变它?非常感谢您的帮助,谢谢!

qni6mghb

qni6mghb1#

使用 nextLine() 从文件中读取一行,然后消除结束句点,并用逗号分隔。
并使用try with resources正确关闭文件。

public static void readFile() throws FileNotFoundException {
    try (Scanner scan = new Scanner(file)) {
        scan.nextLine(); // required because there is one empty line at .txt start
        GrocerieList.foodList.addAll(Arrays.asList(scan.nextLine().replaceFirst("\\.$", "").split(",\\s*")));
        GrocerieList.foodAmount.addAll(Arrays.asList(scan.nextLine().replaceFirst("\\.$", "").split(",\\s*")));
    }
}
iklwldmw

iklwldmw2#

通常您会保存从 nextLine 方法,并使用 split 方法将列表分解为一个数组,然后将其存储到目标。如果需要转换,例如从字符串到整数,则单独进行转换。

String lineContent = scan.nextLine();
  String[] components = lineContent.split(","); //now your array has "pizza", "fries", "eggs" etc.
ff29svar

ff29svar3#

最简单的方法是使用string#split。你也不想要“下一个”,而是下一个 GrocerieList.foodList.addAll(Arrays.asList(scan.nextLine().replaceFirst("\\.$", "").split(", "))); (应该有效,但没有测试)。
有关scanner类的更多信息,请参阅https://docs.oracle.com/javase/7/docs/api/java/util/scanner.html

相关问题