0

ファイルを入力して、そこから印刷された文字列と double を抽出しようとすると、テキスト自体に関する情報が抽​​出されてしまいます。ファイルから行を出力するために、while ループに System.out.println を挿入しました。また、余分な行のテキスト情報も出力しました。次のような行を無視して、ファイルから書かれたテキストのみを取得しようとしています。

\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural"

ファイルから情報を取得して文字列配列を作成できるように、これを行っています。このプログラムの目的は、情報の行 (姓 (string)、名 (string)、口座残高 (double)) を含むファイルを入力し、各行を個別に抽出し、各行の文字列を配列リストに配置し、ソートすることです。配列リスト (姓、名の順) を取得し、新しく並べ替えられた行を含む output.txt という名前のファイルを出力します。行は、姓、名、口座残高の順にフォーマットされ、それぞれの間に 1 つのスペースが入ります。行数は異なる場合があります。

入力例 (.txt ファイルから):

スミス・チャールズ 200.000

アレン・ドレイク 5000.00

アレン・トレイ 300.00

バービス ゼイク 400.00

ザンリック 6000.00

出力例 (ファイル output.txt に書き込まれます):

アレン・ドレイク 5000.00

アレン・トレイ 300.00

バービス ゼイク 400.00

スミス・チャールズ 200.000

ザンリック 6000.00

ありがとう!

    public static void main(String[] args) throws IOException {
    Scanner fileName = new Scanner(System.in);
    String file = fileName.next();
    String input;
      Scanner fileinput = null;
   // File inFile = new File("c:\\csc2310\\test.txt");
      File inFile = new File(file);
     int i = 0;
      try
      {
        fileinput = new Scanner(inFile);
        while(fileinput.hasNext())
        {

           i++;
           System.out.println(i);
           input = fileinput.nextLine();
            System.out.println(input);
        }
        fileinput.close();
      }catch(FileNotFoundException e)
      {
        System.out.println(e);
        System.exit(1);
      }
      finally
      {
          fileinput.close();
      }
 }
4

2 に答える 2

-1

あなたのひもはだめです。Java は、読み取り中に \ 文字を自動的に \ で埋めます。

したがって、あなたは得る

"\\pard\\tx720\\tx1440\\tx2160\\tx2880\\tx3600\\tx4320\\tx5040\\tx5760\\tx6480\\tx7200\\tx7920\\tx8640\\ql\\qnatural\\pardirnatural"

おそらくできることは、文字列をバイト配列として読み取り、 \ に相当するバイトを削除することだけです。可能か確認

于 2013-07-05T18:38:29.323 に答える