1

「ボックス」クラスの長さ、幅、高さの入力をそれぞれ取得したいと思います。今、私はそれを整数のストリームとして取り、ボックスの各次元に個別に設定したいと考えています。ストリームは、ユーザーが 0 を押すまで i/p として取得されます。したがって、このように記述しました (メイン メソッドについて言及しているだけで、ボックス クラスを個別に定義しました)。

public static void main(String args[])
{

    System.out .print("Enter length, breadth and height->> (Press '0' to end the i/p)");
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    while((br.read())==0)
    {
        // What should I write here to take the input in the required manner?
    }
}

PS: scannerconsoleまたはは使用できませんDataInputStream。では、ここで私を助けてくださいBufferedReader

4

3 に答える 3

2

絶対に を使用する必要があることを示したのでBufferedReader、これを行う 1 つの方法は、BufferedReader#readLine()代わりにメソッドを使用することだと思います。これにより、ユーザーが入力した行全体が行末まで表示されます(ドキュメントによると、 「\ r」または「\ n」のいずれか)。

Zong Zheng Li が既に述べたように、Scannerクラスは入力行をトークン化できますが、それを使用できないため、自分で手動で行う必要があります。

この時点で思い浮かぶ 1 つの方法は、スペース (\s) 文字で単純に分割することです。したがって、コードは次のようになります。

System.out .print("Enter length, breadth and height->> (Press '0' to end the i/p)");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String inputLine = br.readLine(); // get user input

String[] inputParts = inputLine.split("\\s+"); // split by spaces

int width = Integer.parseInt(inputParts[0]);
int height = Integer.parseInt(inputParts[1]);
int breadth = Integer.parseInt(inputParts[2]);

一般的な例を示しているだけなので、エラー、範囲チェック、または入力検証は示していないことに注意してください。

これを行う方法は他にもたくさんあると思いますが、これが私の頭に浮かんだ最初のアイデアです。それが多少役立つことを願っています。

于 2013-11-05T16:22:17.263 に答える
2

Scannerだけを使用していない特別な理由はありますか? 値をトークン化して解析します。

Scanner sc = new Scanner(System.in);
int width = sc.nextInt();
int height = sc.nextInt();
于 2013-11-05T16:11:12.390 に答える
0

多分あなたはこれを試すことができます。

public static void main(String args[])
{
    String input = 0;
    ArrayList<int> list = new ArrayList<int>();
    boolean exit = true;
    System.out.print("Enter length, breadth and height->> (Press '0' to end the i/p)");
    try {
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       while((input = br.readLine()!=null && exit)
       { 
         StringTokenizer t = new StringTokenizer(input);
         while(t.hasMoreToken()){
             if(Integer.parseInt(t.nextToken()) != 0){
                list.add(input);
             }
             else{
                exit = false;
             }
         }

       }
       //list contains your needs. 
    } catch(Exception ex) {
       System.out.println(ex.getMessage());
    }
}
于 2013-11-05T16:21:05.030 に答える