亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將逗號分隔的文本文件分隔到數組

將逗號分隔的文本文件分隔到數組

慕俠2389804 2022-07-27 16:37:36
我有一個包含多行的文本文件,每行 3 個逗號分隔的條目。例子:蘇聯,Larisa_LATYNINA,18美國,Michael_PHELPS,16蘇聯,Nikolay_ANDRIAOV,15我試圖將它們分成 3 個數組,其中 1 個代表國家,1 個代表個人,1 個代表獎牌。        ArrayList<String> country = new ArrayList<>();        ArrayList<String> name = new ArrayList<>();        ArrayList<Integer> medals = new ArrayList<>();        java.io.File file = new java.io.File("Olympics.txt");        Scanner input = new Scanner(file);        input.useDelimiter(" , ");        while(input.hasNext()) {            country.add(input.next());            name.add(input.next());            medals.add(input.nextInt());        }但每次我嘗試運行它時都會出錯。我不確定如何將文件中的每個“列”分成它們自己的數組。如果我使用useDelimiter(",");而不是useDelimiter(" , ");我得到以下異常:Exception in thread "main" java.util.InputMismatchExceptionat java.base/java.util.Scanner.throwFor(Scanner.java:939)at java.base/java.util.Scanner.next(Scanner.java:1594)at java.base/java.util.Scanner.nextInt(Scanner.java:2258)at java.base/java.util.Scanner.nextInt(Scanner.java:2212)at OlympicWinners.main(OlympicWinners.java:14)這是我得到的錯誤。第 14 行是Medals.add(input.nextInt());
查看完整描述

3 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

從您的文本示例中,分隔符不是用空格 ( " , ") 包圍的逗號,而只是一個逗號 ( ",")。刪除這些空格,你應該沒問題:

input.useDelimiter(",");


查看完整回答
反對 回復 2022-07-27
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

你得到InputMismatchException是因為最后一行input.nextInt()返回


"18 

United States"

由于and之間沒有,分隔符(但有行分隔符),每個標記從分隔符返回到分隔符。18United States\n


您應該從文件中讀取所有行并按分隔符拆分它們:


List<String> lines = Files.readAllLines(Paths.get("Olympic.txt"));


for (String line : lines) {

    String[] fields = line.split(",");

    country.add(fields[0]);

    name.add(fields[1]);

    medals.add(Integer.valueOf(fields[2]));

}


查看完整回答
反對 回復 2022-07-27
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

請將您的代碼修改為:


public class Main {


    public static void main(String[] args) throws FileNotFoundException {

        ArrayList<String> country = new ArrayList<>();

        ArrayList<String> name = new ArrayList<>();

        ArrayList<Integer> medals = new ArrayList<>();

        BufferedReader reader;

        try {

            reader = new BufferedReader(new FileReader("F://test.txt"));

            String line = reader.readLine();

            while (line != null) {

                String[] lineParts = line.split(",");

                country.add(lineParts[0]);

                name.add(lineParts[1]); 

                medals.add(Integer.valueOf(lineParts[2]));

                line = reader.readLine();

            }

            reader.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

        System.out.println(country);

        System.out.println(name);

        System.out.println(medals);


    }


}

在 test.xml 中:


Soviet Union,Larisa_LATYNINA,18

United States,Michael_PHELPS,16

Soviet Union,Nikolay_ANDRIANOV,15

代碼輸出:


[Soviet Union, United States, Soviet Union]

[Larisa_LATYNINA, Michael_PHELPS, Nikolay_ANDRIANOV]

[18, 16, 15]


查看完整回答
反對 回復 2022-07-27
  • 3 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號