2017-12-03 15 views
2

コンソールからスキャナで複数の変数を1行だけ読み込もうとしています(空白で区切っています)。スキャナで複数の変数を1行で読み取る

私が入力した場合:

int hight = Integer.parseInt(reader.nextLine()); 
int width = Integer.parseInt(reader.nextLine()); 
int depth = Integer.parseInt(reader.nextLine()); 

それはこのように(例えば、1,2,3のために)私の番号が表示されます。

1 
2 
3 

が、私はそれがそのように私の番号を表示したいです:1 2 3

誰かが私を助けることができますか?これを行うには

+0

1のように - あなたは正確に何を意味するか明確にしてください? –

+0

なぜあなたがIntを最初に読み込み、それをintに変換するのかよりも、 –

+1

[1行から複数​​のintを読み込むJava]の複製が可能です(https://stackoverflow.com/questions/23506429/java-reading-multiple)。 -ints-from-a-single-line) – Raghu

答えて

2

一つの方法ではなくnextLinenextIntを使用することです:

int hight = reader.nextInt(); 
int width = reader.nextInt(); 
int depth = reader.nextInt(); 

あなたの入力は、このようにすることができます:あなたが押す前に、すべての3つの数字を入力する必要が

1 2 3 

注意ENTER、またはそれ以外の入力は次のようになります。

1 
2 
3 

これを実行する別の方法は、あなたが入力中になりたい正確な形式を指定nextLineを呼び出して、ユーザーが正規表現パターンに入力された行にマッチする正規表現を使用することです:

Matcher matcher = Pattern.compile("(\\d+)\\s+(\\d+)\\s+(\\d+)").matcher(reader.nextLine()); 
if (matcher.matches()) { 
    int height = Integer.parseInt(matcher.group(1)); 
    int width = Integer.parseInt(matcher.group(2)); 
    int depth = Integer.parseInt(matcher.group(3)); 
} else { 
    // input was invalid! 
} 
+0

このように使用することはできません。マッチャーの新しい使い方をTIL。 +1 – Raghu

0

1行に3つの値をすべて入力するには、使用できます。 の代わりにを3回入力します。あなたはこのような入力を1 2 3のように置くことができ、Enterをキーボードで押すと(入力を終了するためにデフォルトで使用されます)、あなたが求めていたものが得られます。

あなたの意図ではなく、複数行の1の1行で出力がコンソールに方法印刷の他のバージョンを使用する必要があり得ることだった場合は、次の引数の後

System.out.print(height + " " + weight + " " + depth) 

System.out.println()プリント次の行の文字、System.out.print()しません。

+0

質問には答えません。 – Harsh

+0

彼の質問の後、彼はこれらの値を表示することについて言います、私はそれが役に立つかもしれないと思った。さて、私は自分の答えを編集していて、あなたは下垂体を再考することを願っています。 –

+1

はい私の悪い、編集してください、私はdownvoteを削除します。また、質問の第2部分に答えていることを具体的に指摘できますか? – Harsh

0

あなたのコメントを1として、あなたは、単にのような数値を整数として読むことができます:

Scanner br =new Scanner(System.in); 
    int a=br.nextInt(); 
    int b=br.nextInt(); 
    int c=br.nextInt(); 

与える入力ここにはコードが何も表示されない2 3.

関連する問題