2012-04-07 3 views
1

文字列argsを使用してコマンドラインから入力を取得する方法を知っていて、input = args[0]で入力が正常に動作していますjava.exe program s1.in"java.exe program <s1.in"のようなコマンドライン入力を処理する方法

しかし、私は端末で比較プログラムを実行する必要があります。だから、私の入力は "<"のシンボルでなければなりません。しかし、私はinput = args[1]を使って入力値を得ることができません。これを入力すると、args.lengthは0になります。なぜこれが起こりますか?

Googleではこの種の用語を最もよく検索する方法は誰も知っていますか? Googleが「<」を検索エントリに認識していません。

はありがとう

+1

をjavaプログラムの入力。 –

答えて

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); 
     } 
    } 
} 

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

0

多くの場合、最も簡単な方法は、スキャナを使用することです:標準にほとんどのコマンドラインシェル、s1.in` ``のJavaプログラムは

Scanner scaner = new Scanner (System.in); 
関連する問題