- ベストアンサー
[至急!]Javaプログラミングの質問:野球のBSOカウンタがうまく動かない
- Javaのプログラムで野球のBSOカウンタを作ろうとしていますが、うまく動かない問題が発生しています。入力と出力のループがうまく行えず、改良が必要です。
- プログラムは3つのアウトカウントまで、入力が「s」の場合はSのカウンタに「〇」を表示し、入力が「b」の場合はBのカウンタに「〇」を表示し、入力が「o」の場合はOのカウンタに「〇」を表示します。
- 現在、入力と出力の処理が正しく行われず、プログラムがうまく動かない状況です。改良して動作させる方法を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1の補足読みました。 えーと、毎回出力するということは、最初の方にあるwhileループの中に出力も入ってないといけないということだと思うんですが、カッコの数を見る限り、 System.out.println("入力が違います。"); } } ↑このカッコでwhileループが終わってませんか? そうすると、それより下はループから抜けた後に1度しか実行されませんけども。(笑) あと、うまくいかない場合は「どういう風にうまくいかないのか?」を書かないと、普通は他の人はソースいちいち読んでくれませんよ。
その他の回答 (2)
- jjon-com
- ベストアンサー率61% (1599/2592)
import java.io.*; public class Q7588996 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); //String str=br.readLine(); //char hantei=str.charAt(0); int sc=0,bc=0,oc=0; while(oc<3){ String str=br.readLine(); char hantei=str.charAt(0); if(hantei=='s') { sc=sc+1; if(sc==3) { oc=oc+1; sc=0; bc=0; } } else if(hantei=='b') { bc=bc+1; if(bc==4) { sc=0; bc=0; } } else if(hantei=='o') { oc=oc+1; sc=0; bc=0; } else { System.out.println("入力が違います。"); } System.out.print("B "); for(int i=0;i<bc;i++){ System.out.print("〇"); } System.out.println(""); System.out.print("S "); for(int i=0;i<sc;i++){ System.out.print("〇"); } System.out.println(""); System.out.print("O "); for(int i=0;i<oc;i++){ System.out.print("〇"); } System.out.println(""); } } }
お礼
ありがとうございました。おかげで何とかになりそうです。
- drum_KT
- ベストアンサー率43% (1108/2554)
全部は見てないけど、例えばこの部分。(見づらいので全角でインデントしてみました) if(hantei=='s') { c=sc+1; if(sc==3) oc=oc+1; sc=0; bc=0; } 意味としては上のようにインデントしたように動かしたいのだと思うけども、そうすると {} が足りない。正しくは、 if(hantei=='s') { sc=sc+1; if(sc==3) { oc=oc+1; sc=0; bc=0; } } だよね。他のところも同じように間違っていると思うので、全体的に見直しが必要です。
補足
回答ありがとうございます。いくつか直してみましたがやはり希望通りには行きません。一度入力したらそのたびにBSOが表示されるようにしたのですが・・・
お礼
ご忠告と回答ありがとうございます。次からはそのようにしたいと思います。ありがとうございました。これを元に拡張していくつもりです。