2

私はJavaの問題を抱えています。行ごとに可変数の整数を持つtxtファイルを読み込もうとしていますが、行ごとに2番目の整数を合計する必要があります! スキャナーを使用して整数を読み取っていますが、行が完了するとうまくいきません。誰でも助けてもらえますか?

4

4 に答える 4

2

テキストファイルを読み取るためのBufferedReaderクラスと、各行を文字列に分割するためStringTokenizer クラスを見てください。

String input;
BufferedReader br = new BufferedReader(new FileReader("foo.txt"));
while ((input = br.readLine()) != null) {
  input = input.trim();
  StringTokenizer str = new StringTokenizer(input);
  String text = str.nextToken(); //get your integers from this string
}
于 2009-10-24T14:44:35.547 に答える
0

もし私があなたなら、おそらくApacheCommonsIOのFileUtilsクラスを使用するでしょう。このメソッドは、行ごとに1つずつ、文字列のリストを返します。そうすれば、一度に1行だけ処理できます。readLines(File file)

このようなもの:

    File file = new File("test.txt");
    List<String> lines = FileUtils.readLines(file);
    for (String line : lines) {
        // handle one line
    }

(残念ながら、Commons IOはジェネリックスをサポートしていないため、List <String>に割り当てるときに、チェックされていない割り当て警告が表示されます。@ SuppressWarningsを使用するか、型指定されていないリストを使用して文字列にキャストすることを修正します。)

これはおそらく、「ライブラリを知って使用する」を適用し、低レベルの定型コードの記述を完全にスキップできる状況の例です。

于 2009-10-24T15:04:23.700 に答える
0

または、コモンズから必需品をこすり落として、優れたテクニックを学び、瓶をスキップします。

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

class Test
{
    public static void main(final String[] args) 
    {

       File file = new File("Test.java"); 

       BufferedReader buffreader = null;
       String line = "";

        ArrayList<String> list = new ArrayList<String>(); 

        try 
            {
                buffreader = new BufferedReader( new FileReader(file) );
                line = buffreader.readLine();
                while (line != null) 
                {
                   line = buffreader.readLine();
                   //do something with line or:
                   list.add(line);
                }
             } catch (IOException ioe) 
             {
                    // ignore
             } finally 
             {
               try 
               {
                  if (buffreader != null) 
                  {
                     buffreader.close();
                  }
               } catch (IOException ioe) 
               {
                    // ignore
               }

            }

           //do something with list
           for (String text : list) 
           {       
               // handle one line
               System.out.println(text);       
           }

   }
}   
于 2009-10-27T21:01:45.810 に答える