1

文字列引数を使用してコマンドラインから入力を取得する方法を知っておりinput = args[0]、入力がどこにあるかで正常に機能していますjava.exe program s1.in

しかし、ターミナルで比較プログラムを実行する必要があります。したがって、入力には「<」記号が必要です。ただし、を使用して入力値を取得できませんinput = args[1]。これを入力すると、args.length が 0 になります。これはなぜですか?

余談ですが、Googleでこの種の用語を検索するのに最適な方法を知っている人はいますか? Google は検索エントリの「<」を認識しないと思います。

ありがとうございました

4

2 に答える 2

2

を使用するxyzzy <inputfileと、シェルが実行xyzzyされ、そのファイルが標準入力に「接続」されるためです。次に、その標準入力を読み取ってデータを取得することを期待しています-引数はコマンドラインから削除されているため(または、引数リストに追加されていない可能性が高いため)、表示されません。

そのため、多くのプログラムは、指定されたファイルを処理し、そうでない場合は標準入力からデータを読み取ります。そして、それはまさにあなたがここでしなければならないことです。

これを行うには、おそらく次のようなものが必要になるでしょう。

import java.io.*;

class Test {
    public static void main(String args[]) {
        InputStreamReader inp = null;
        Boolean isStdIn = false;

        try {
            if (args.length > 0) {
                inp = new InputStreamReader(new FileInputStream(args[0]));
            } else {
                inp = new InputStreamReader(System.in);
                isStdIn = true;
            }

            // Now process inp.

            if (isStdIn)
                inp.close();

        } catch (Exception e) {
            System.exit(1);
        }
    } 
}

ファイル (利用可能な場合) または読み取り用の標準入力ストリームのいずれかを選択します。

于 2012-04-07T01:20:20.033 に答える
0

多くの場合、最も簡単な方法は Scanner を使用することです。

 Scanner scaner = new Scanner (System.in);
于 2012-04-07T02:13:43.063 に答える