簡體   English   中英

如何逐行將字符串文本從記事本轉換為數組?

[英]How to convert string text from notepad into array line by line?

我是編程的初學者。 我目前正在學習如何逐行將文本從記事本轉換為數組。 記事本中的文本實例,

我是一名高中生
我喜歡香蕉和雞肉
我有2只狗和3只貓

等等..

在這種情況下,數組[1]將是'我愛香蕉和雞'字符串。 記事本中的行可以更新,我希望數組是動態/靈活的。 我曾嘗試使用掃描儀識別每一行並嘗試將它們傳輸到陣列。 請參考我的代碼:

import java.util.*;
import java.io.*;
import java.util.Scanner;

class Test
{
    public static void main(String[] args)
        throws Exception
    {
        File file = new File("notepad.txt");     
        Scanner scanner = new Scanner(file);  
        String line;
        int i = 0;
        int j = 0;

        while (scanner.hasNextLine()) {
            i++;
        }

        String[] stringArray = new String[i];

        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            stringArray[j] = line;
            j++;
        }

        System.out.println(stringArray[2]);

        scanner.close();
    }
}

我不確定為什么會出現運行時錯誤,我嘗試了另一種方法,但仍然沒有產生我想要的結果。

第一個循環將是無限的,因為您檢查掃描儀是否有下一行,但從不提前其位置。 雖然使用Scanner很好,但看起來很多工作,你可以讓Java的nio包為你做繁重的工作:

String[] lines = Files.lines(Paths.get("notepad.txt")).toArray(String[]::new);

您可以通過創建ArrayList然后將其轉換為String Array來完成。

以下是一個示例代碼,可幫助您入門:

public static void main(String[] args) throws FileNotFoundException {
    Scanner in = new Scanner(new File("notepad.txt"));
    List<String> outputList = new ArrayList<>();

    String input = null;
    while (in.hasNextLine() && null != (input = in.nextLine())) {
        outputList.add(input);
    }

    String[] outputArray = new String[outputList.size()];
    outputArray = outputList.toArray(outputArray);

    in.close();
}

既然你想要數組是動態/靈活的,我建議在這種情況下使用List。 這樣做的一種方法 -

List<String> fileLines = Files.readAllLines(Paths.get("notepad.txt"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM