こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

至急!java オブジェクト指向

昨日、質問させていただいた者です。おかげさまで、試合の状況を出力するプログラムが完成しました。あとはこれをオブジェクト指向のプログラムにしたいので、BSO()、Runner()、Score()のメソッド等を別々のクラスに記述して動作させるようにしたのですが、エラーばかりで起動できませんでした。インターフェースや継承などを使っていただいて構わないので、できれば改良のほうをお願いします。

import java.io.*;
public class test1 {
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int sc=0,bc=0,oc=0,rc1=0,rc2=0,rc3=0,tenA=0,tenB=0,i=0;

BSO(sc, bc, oc);
Runner(rc1,rc2,rc3);
Score(tenA,tenB,i);

while(true){
i++;
while(true){
System.out.println("ピッチャー、投げた!");
String str=br.readLine();
char hantei=str.charAt(0);
if(hantei=='s'){
System.out.println("ストライク!");
sc++;
}else if(hantei=='b'){
System.out.println("ボール!");
bc++;
}else if(hantei=='o'){
System.out.println("アウト!");
oc++;
bc=sc=0;
}else if(hantei=='h'){
System.out.println("ヒット!");
bc=sc=0;
}else if(hantei=='x'){
System.out.println("ホームラン!");
bc=sc=0;
}else{
System.out.println("入力が違います。");
continue;
}
if(sc==3){
System.out.println("ストライク!バッターアウト!");
oc++;
sc = bc =0;
}else if(bc==4){
System.out.println("フォアボール!");
sc = bc =0;
}
if(oc >= 3){
System.out.println("スリーアウト!");
break;
}
System.out.println("走者は出たか、又は進塁したか?");
String str6=br.readLine();
char kakuninn=str6.charAt(0);

if(kakuninn=='y'){
System.out.println("一塁は");
String str2=br.readLine();
char r1=str2.charAt(0);
if(r1=='y'){
rc1=1;
}else if(r1=='n'){
rc1=0;
}else{
System.out.println("入力が違います。");
continue;
}
System.out.println("二塁は");
String str3=br.readLine();
char r2=str3.charAt(0);
if(r2=='y'){
rc2=1;
}else if(r2=='n'){
rc2=0;
}else{
System.out.println("入力が違います。");
continue;
}
System.out.println("三塁は");
String str4=br.readLine();
char r3=str4.charAt(0);
if(r3=='y'){
rc3=1;
}else if(r3=='n'){
rc3=0;
}else{
System.out.println("入力が違います。");
continue;
}
}else{
}
System.out.print("得点は? :");
String str7=br.readLine();
int tokuten=Integer.parseInt(str7);
if(i%2==1){
tenA=tenA+tokuten;
}else{
tenB=tenB+tokuten;
}
BSO(sc, bc, oc);
Runner(rc1,rc2,rc3);
Score(tenA,tenB,i);
}
oc=0;
rc1=rc2=rc3=0;
BSO(sc, bc, oc);
Runner(rc1,rc2,rc3);
Score(tenA,tenB,i);
if(i==6){
System.out.println("ゲームセット!");
break;
}else{
}
}
Score(tenA,tenB,i);
}

public static void BSO(int sc, int bc, int oc){
System.out.println("---- BSOカウント ----");
System.out.print("B ");
for(int i=1;i<=bc;i++){
System.out.print("〇");
}
System.out.println("");
System.out.print("S ");
for(int i=1;i<=sc;i++){
System.out.print("〇");
}
System.out.println("");
System.out.print("O ");
for(int i=1;i<=oc;i++){
System.out.print("〇");
}
System.out.println("\n------------------");
}

public static void Runner(int rc1,int rc2,int rc3){
System.out.println("***走者の有無***");

if(rc2==1){
System.out.println(" ▲ ");
}else if(rc2==0){
System.out.println("  △ ");
}
if(rc3==1){
System.out.print("▲  ");
}else if(rc3==0){
System.out.print("△  ");
}
if(rc1==1){
System.out.println("▲");
}else if(rc1==0){
System.out.println("△");
}
System.out.println("***************");
}

public static void Score(int tenA,int tenB,int i){
if(i==0||i==1||i==2){
System.out.print("1回");
}else if(i==3||i==4){
System.out.print("2回");
}else if(i==5||i==6){
System.out.print("3回");
}
if(i==0||i%2==1){
System.out.println("表");
}else{
System.out.println("裏");
}
System.out.println(tenA+" "+"-"+" "+tenB);
}
}

投稿日時 - 2012-07-14 23:07:34

QNo.7590748

すぐに回答ほしいです

質問者が選んだベストアンサー

> これをオブジェクト指向のプログラムにしたいので、

その目的は何ですか? 良いオブジェクト指向設計を行うには、何のためにクラスを分けるのかという意識が必要です。

ついでに書くと、Java言語では
・クラス名やインタフェース名は大文字で始める (test1→Test1)
・メソッド名やパッケージ名は小文字で始める (Runner()→runner())
という慣習があります。

投稿日時 - 2012-07-15 18:14:09

お礼

解答してくださりありがとうございます。なんとか自己解決しました。

投稿日時 - 2012-07-15 21:48:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)