[英]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.