コマンドライン引数としてハードコードされたファイルパスと受け渡し間のファイル出力の違い

エリックA:

だから、私はその後、別のファイルに出力を書き込み、文字で操作を行って、一度にファイル1つの文字から読んでいたプログラムを書いています。

何らかの理由で私は別の結果を得るとき、私のハードコードファイルのパス私は、コマンドラインからファイルを渡すときには(私はそれをした私は、デバッグ中にファイルを入力しておく必要はありませんでしただけに)。

私は、コマンドラインからファイルを渡すと、それは私が10行でファイルがあった場合ので、私は唯一の処理されている8行を取得することがあり、時々入力行をスキップします。

私はそれが入力行の末尾のスペースがあるかどうかとは何かを持っている感覚を持っているが、私はそれを把握するように見えることはできません。すべてのヘルプははるかに高く評価されるだろう。

私は、ファイルパスをハードコーディングし、私は、コマンドライン引数を使用する場合、端末からプログラムを実行したときも、私は、NetBeansを使用していました。私は、以下のI / Oコードを貼り付けています。

while( ( i = buffRead.read() ) != -1 )
{
    try
    {

        char c = (char) i;

        if ( Character.isWhitespace(c) )
        {
            if(converter.getStackSize() > 1)
            {
                converter.resetConverter();
                throw new IncorrectNumOfOperandsException();
            }

            buffRead.readLine();
            converter.resetConverter();
            writeOut.println();

        }
        else
        {
            converter.register( c );
        }
    }
    catch (InvalidCharException j)
    {
        writeOut.println("Invalid Character Entered\n");
        buffRead.readLine();
    }
    catch (IncorrectNumOfOperatorsException k)
    {
        writeOut.println("Too Many Operators for Number of Operands\n");
        buffRead.readLine();
    }
    catch ( IncorrectNumOfOperandsException m)
    {
        writeOut.println("Too Many Operands for Number of Operators\n");
        buffRead.readLine();
    }

}


buffRead.close();
writeOut.close();        
スティーブンC:

私は、問題を参照してくださいと思います。

あなたはテストしc、それが空白文字であるかどうかを確認するために、それがある場合、あなたはそれから呼び出しますreadLine()readLine()行うことは、それは次の行末シーケンスになるまで一個の以上の文字を読むことです。

ときに何が起こるc改行文字が含まれていますか?

  • 改行は空白文字である(それを見て)
  • そう、あなたがちょうど読んでいることを改行後の最初の文字で始まる、ラインを読みます
  • ラインを捨てます。

あなたが持っているので、(誤って)入力の完全なラインを捨てます。

解決策は...私はあなたに残します。

私は、コマンドラインからファイルを渡すと、それは時々、入力行をスキップします...

私は、あなたが入力を入力したときと同じ動作が起こっていたことを疑う...しかし、あなたはそれに気づきませんでした。しかし、プラットフォーム固有の行終結配列で起こって何かがあることが可能です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18878&siteId=1