2017-04-02 7 views
0

JavaがScannerを使用してファイルから行を読み込む方法を理解していて、混乱した後に何らかの説明を得ることを望んでいました。Scannerを使用してファイルを読む

名前が含まれている行が1つ、次に5が2つの.txtファイルがあります。私はどのように私はループ内の変数にそれらのそれぞれを割り当てることができるかを把握しようとしているので、私はデータを扱うことができます。私の目標は、実際にはこれらの行からデータを取り出し、それをパラメータとして別の検証メソッドに渡すことです。そのための簡単な方法があれば、私はすべて耳にします。私はnextLineの中のそれぞれのものを、行全体のちょうど上で繰り返し処理する方法を見つけることができないように感じます。私は配列を使わずにこれをやろうとしていますが、ここに私が今持っている関連するコードスニペットがあります。

Scanner inputFile = new Scanner(file); 

while (inputFile.hasNext()) 
    { 
     String line = ""; 
     accumulator++; 
     Scanner split = new Scanner(inputFile.nextLine()); 

     while (split.hasNext()) 
     { 

     } 



     stockName = inputFile.next(); 
     shares = inputFile.nextDouble(); 
     purchasePrice = inputFile.nextDouble(); 
     purchaseCommission = inputFile.nextDouble(); 
     salesPrice = inputFile.nextDouble(); 
     salesCommission = inputFile.nextDouble(); 

     System.out.println(stockName); 
     System.out.println(shares); 
     System.out.println(purchasePrice); 
     System.out.println(purchaseCommission); 
     System.out.println(salesPrice); 
     System.out.println(salesCommission); 


     System.out.print(line); 
     System.out.println(""); 
     // checkValidity(line); 
    } 

私が尋ねると、私にはわからない何の関節苦労を抱えているので、任意およびすべてのヘルプは大歓迎です...私は、文字通り3日間これに取り組んできたと私は思い総壁に

EDIT:テキストファイルの

レイアウトはあなたがほとんど存在し、この

DELL: Dell Inc 
125 25.567 0.025 28.735 0.025 
MSFT: Microsoft 
34.1 -15.75 0.012 15.90 0.013 

答えて

1

のように見えます。

while (split.hasNext()) 
{ 

} 

これは分割に与えられたすべての要素を消費します。あなたはsalesPrice

ので、外側の内側の新しいスニペットはループが

以来
stockName = inputFile.nextLine(); 
    Scanner split = new Scanner(inputFile.nextLine());   

    shares = split.nextDouble(); 
    purchasePrice = split.nextDouble(); 
    purchaseCommission = split.nextDouble(); 
    salesPrice = split.nextDouble(); 
    salesCommission = split.nextDouble(); 

、あなたが行ずつ読んでいる、また確認しているなどしながら、stockのようなすべての要素にこれを割り当てる必要がありますouter whileループは次のようになります。

while (inputFile.hasNextLine()) { 

} 
+0

ファイルは、名前が1行にあり、次の行が必要なすべてのデータになるように実際にレイアウトされています。私はsplit.nextLine()への切り換えを試みましたが、NoSuchElementExceptionの次の行(シェア)についてエラーをスローします。どんな考え?単に行全体を消費してから自動的に次の行に移動する必要はありませんか? – Josh

+0

@Joshあなたのコメントの後編集されています – bsd

関連する問題