前提・実現したいこと
コマンドプロンプトに数値を入力し0から9のランダムで表示される数値と比較して答え合わせをする。
発生している問題・エラーメッセージ
入力された数値が文字コードとして扱われる。
(例)
java No9
0
0から9のデータを入力してください:8
該当のソースコード
java
1import java.io.InputStreamReader; 2 3import java.io.IOException; 4 5/** 6*コマンドプロンプトに数値を入れて 7*乱数データと一致した場合に正解と 8*表示します。 9*/ 10class No9{ 11 public static void main(String[] args){ 12 //0から9を示す乱数データ 13 int random =(int)(10*Math.random()); 14 15 InputStreamReader isr = new InputStreamReader(System.in); 16 17 try{ 18 //コマンドプロンプト入力数値 19 int data = isr.read(); 20 //入力数値と乱数データを比較する式 21 22 if(data == random&&(data<10)&&(data>=0)){ 23 System.out.println("正解:"+random); 24 }else if ((data<random)&&(data<10)&&(data>=0)){ 25 System.out.println("もっと大きい値です:"+random); 26 }else if ((data>random)&&(data<10)&&(data>=0)){ 27 System.out.println("もっと小さい値です:"+random); 28 }else{ 29 System.out.println("0から9のデータを入力してください"); 30 } 31 } 32 catch(IOException e){ 33 e.printStackTrace(); 34 } 35 } 36}
「InputStreamReader」の「read()」は単一の文字を読み込むメソッドですが、それは理解していますか?
コードはマークダウンのcodeにてご提示ください
ソースコードをコピペしてみましたが、コンパイルが通りません。
またif-elseの分岐ですが常にelseにしか到達しないですね。
> (data<10)&&(data>=10)
を満たすdataは入力できないですね・・・
>>m.ts10806さん
誠に申し訳ございません。初心者かつ本日初めての投稿のためマークダウンの意味が分かりかねております。
>>Luiceさん、momon-gaさん
ご指摘ありがとうございました。修正いたしました。
>>userisgodさん
read()については理解できていませんでした。
InputStreamReaderで数値を扱う場合にはread()は使う事が出来ないんですね……
InputStreamReadeには数値を扱う事が出来るメソッドはないのでしょうか?
>マークダウンの意味が分かりかねております。
サイト内、ヘルプページとか調べてください。意味だけならそのままグーグル検索へ。
>>m.ts10806さん
ご指摘ありがとうございます。
書き直しました。
回答2件
あなたの回答
tips
プレビュー