0

これは、経験豊富なプログラマーにとっては比較的迅速な修正になるはずです...テキストファイルを入力し、「>」または「+」で始まらないすべての行の前に「#」を付けたかっただけです。問題は、例外が発生していることです。.charAt(0)が文字列の範囲外です。しかし、コンソールがその行を実行する前に、文字列をテキストファイルから読み取る必要があります-何が欠けていますか?以前に宣言されたlineFromFileStringが空にならないように、何かの行を挿入する必要がありますか?どうしたらいいのかわからない…

java.io.*をインポートします。

パブリッククラスFirstTry{

/**
 * @param args
 */
public static void main(String[] args) throws Exception{
    // Declare variables corresponding to names of i/o files
    String oldFilename = "";
    String newFilename = "";

    // Console input of i/o filenames
    BufferedReader cin;
    cin = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("What is the input text? Include path and .txt extension) ");
    oldFilename = cin.readLine();
    System.out.print(oldFilename);

    System.out.println("What is the output text? Include path and .txt extension) ");
    newFilename = cin.readLine();
    System.out.print(newFilename);

    cin.close();

    // Read text from old file,     
    BufferedReader fin;
    fin = new BufferedReader(new FileReader(oldFilename));

    while (fin.ready())
    {
      String lineFromFile;
      lineFromFile = fin.readLine();
      System.out.println(lineFromFile);

      if (lineFromFile.charAt(0) != '>' || lineFromFile.charAt(0) != '+')
      {

        PrintWriter fout;
        fout = new PrintWriter(new FileWriter(newFilename));
        fout.println('#' + lineFromFile);
        fout.close();
      }
    } // while

    fin.close();


    System.out.print("Text processing complete.");

}//main

}//パブリッククラス

4

2 に答える 2

0

ファイルの最初の行が0文字の場合はどうなりますか?

javaの構文はlineFromFile.Length==0だと思います。これがtrueの場合、この行は空であり、別の方法で処理したいと考えています(私が想像する単一の#)

于 2013-01-22T02:10:18.453 に答える
0

@Patashuが述べたように、行には0文字が含まれる場合があります。これはlineFromFile、空の文字列であるため、位置 0 に文字がありません。whileループの一部を次のように変更します。

String lineFromFile;
lineFromFile = fin.readLine();
System.out.println(lineFromFile);

if (lineFromFile.length() == 0) continue;

if (lineFromFile.charAt(0) != '>' || lineFromFile.charAt(0) != '+') {...

挿入した行は、その行が空白かどうかを確認します。そうであれば、ファイルから次の行を読み取るループの次の繰り返しにスキップします。

PrintWriterまた、完全な補足事項として、入力ファイル内の (潜在的に) すべての行を作成して閉じることを再検討することをお勧めします。

于 2013-01-22T02:23:31.017 に答える