2016-04-21 8 views
1
public class Pack1 { 
    public static void main(String ar[]) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("enter the character"); 
     char c=(char)br.read(); 
     System.out.println(c); 
     System.out.println("enter the integer"); 
     long l=Integer.parseInt(br.readLine()); 
     System.out.println("long l="+l); 

     System.out.println(c); 
    } 
} 
+0

あなたの質問は何ですか? – Mureinik

+0

私は最初にchar型の入力をしてint型の入力をしたいのですが、数字型の例外である –

答えて

3

のは、種類Xとプレスが最初の質問に入力し、ユーザは、その後、種類123とプレスが入力ストリームが次の文字が含まれていることを意味するであろう2つ目の質問、上で入力しましょう:

X <CR> 1 2 3 <CR> 

ますread()に電話すると、Xのみが読み取られます。 readLine()に電話すると、<CR>が読み込まれ、空白の文字列が返されます。

1 2 3 <CR>はまだ入力ストリームに未読のまま座っています。

策:代わりにcharなどの、StringとしてXを読み取るために、行の残りの部分をスキップしXを読んだ後または使用readLine()readLine()を呼び出します。

はFYI:これは正確に同じ問題の人々がnextInt()のように、他のnextXxx()メソッドの呼び出しでnextLine()への呼び出しをScannerを使用して混合する際に持っておくです。

+0

を表示しているので、いつでも文字を入力して最初の文字を選択する必要があります。 –

+0

ユーザーに行指向のプロンプトを表示します。 Enterを押し、答えを入力してEnterを押すと、特に一度に1つの値だけを求める場合には、行指向で入力を読む必要があります。 ---また、検証することを忘れないでください。ユーザーが何も入力せずにEnterキーを押すと、何が表示されますか?あるいは、あなたが番号を尋ねたときに 'abc'と打ちます。 – Andreas

0

変更この:

long l=Integer.parseInt(br.readLine()); 

へ:

long l=Long.parseLong(br.readLine(), 10); 

あなたがロングに文字列ではなく整数型を変換しようとしているためです。

関連する問題