2017-01-06 3 views
3

私はプログラミングの初心者です。私は現在、テキストをノートパッドから行ごとに配列に変換する方法を学んでいます。メモ帳内のテキストのインスタンス、文字列のテキストをメモ帳から行ごとに配列に変換する方法は?

私は私が2匹の犬と3匹の猫

など..

を持っているバナナや鶏肉
を愛する高校生
ています

この場合、配列[1]は文字列 'I love banana and chicken'になります。 メモ帳の行を更新することができ、配列を動的/柔軟にすることができます。私はscannerを使ってそれぞれの行を特定し、それらを配列に転送しようとしました。私のコードを参照してください:

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(); 
    } 
} 

私はわからないが、実行時エラーであると私は別のアプローチを試みたが、まだ私が欲しいの結果を生成しなかった理由。

+2

エラーメッセージを投稿してください。 – SteelToe

+0

おそらく無限ループに陥るでしょう。正しい? – Mordechai

+0

''私はバナナとチキンが大好きです。 '' array [1] 'は2次元でなければなりません。さもなければ、これは単に「I」の後ろの空間、すなわち第2の文字である。 – user8

答えて

1

String配列に追加します。ここで

は、あなたが始めるためのサンプルコードです:

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(); 
} 
+4

スタートコードをありがとうございました。これは私の問題を本当に解決しました。私の問題は配列とリストの間の理解の欠如にあると思われる。ありがとう。 –

3

スキャナに次の行があるかどうかを確認しますが、その位置を決して進めることはないので、最初のループは無限になります。 Scannerを使用して結構ですが、それは多くの作業のように思える、とあなたはあなたのためだけに重い物を持ち上げるを行うJavaのNIOパッケージを聞かせできます:あなたは、単にArrayListを作成し、それを変換することによってそれを行うことができます

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

あなたは、配列が柔軟/動的なものにしたいので、私はこのような場合にリストを使用することをお勧めします。これを行う方法 -

List<String> fileLines = Files.readAllLines(Paths.get("notepad.txt")); 
関連する問題