2016-12-07 21 views
0

私はプログラミングにはとても慣れていて、Javaをより良く学ぶためにいくつかのエクササイズを試しています。テキストファイルから文字列を分割し、整数をarraylistに渡す方法は?

今、私は、テキストファイルから検査マークを読み取るプログラム(整数のみを含む)をarraylistに渡します。

ような何か:、

name grade 
NAME 56 
NAME2 67 
NAME3 43 

とプログラムは、このテキストファイルを読み込むことを最初の行を無視します:exammarks.txtファイルが含まれるように、私はこれを修正したいと思いますしかし

exammarks.txt file contains: 
23 45 67 76 12 


Scanner fileScan = new Scanner(new File("exammarks.txt"); 
ArrayList<Integer> marksArray = new ArrayList<Integer>(); 
while (fileScan.hasNextInt()) 
{ 
    marksArray.add(fileScan.nextInt()); 
} 

Print out: [23, 45, 67, 76, 12] 

次に、文字列を整数から分割して、その整数をArrayListに追加します。

すべてのヘルプは大幅にあなたのスニペットを使用し、第二.txtファイルのaswellを読むためにそれを拡張することができます

+1

あなたの2番目のコードブロックが使いたいものですか? – Aelop

+1

好みの入力と好みの出力についてより具体的に説明できますか? – Bgvv1983

+1

'regexp'を使って各行の文字列を分析し、数字だけを抽出することができます。 [regexp](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)のドキュメントを参照してください。 – drgPP

答えて

1

を理解されるであろう。

あなたのwhileループはlinesにループする必要があります。

fileScan.nextLine(); // skip first line 
    while (fileScan.hasNextLine()) 
    { 
     marksArray.add(Integer.valueOf(fileScan.nextLine().split(" ")[1])); 
    } 

それでは、ここで起こることはまずあなたがnextLineを取得し、" "ことによってそれを分割し、Integerが座って第二部を得ることです。しかし、nextLineは2つの文字列に分割された文字列を返すので、Integerにキャストするか、または静的メソッドInteger.valueOfを使用する必要があります。

+0

はこれも最初の行をスキップしますか? – Aelop

+0

@Aelop今はあります。 –

+0

@MuratK。あなたの入力ファイルの名前は空白を含まないことが100%保証されていますか?もしそうなら、ハードコードされた '[1]'はあなたに問題を引き起こします。 – JonK

関連する問題