プロが教える店舗&オフィスのセキュリティ対策術

簡単なゲームを作れという課題なので、
○×ゲームを作ろうと思ったのですが、
C言語よりもJavaは難しいですね…
今途中まで作ったのですが、
同じ行でエラーが多発して何を試しても解決しません…。
先生に聞こうにも提出期限まであと少し。
初心者からの授業だったため安心して授業を受けていたのですが
途中から急にレベルが上がり、エラーが出ても
自分じゃ解決方法がわかりません。

http://catprettyw.bbs.fc2.com/

この掲示板をお借りして、途中までできたプログラムを書きたいと思います。
よろしければコメント、訂正するべきところの指摘などをよろしくお願いします。

A 回答 (4件)

はじめまして。

Javaは少しだけ使ったことがあるC言語使い(C++は+α程度)です。
ソースコード(=プログラム)を読んでみました。
コードのインデント処理を行っていないのか、掲示板の都合でインデントが無効化されたのかはわかりませんが、少し読みにくいですね。
それは置いておいて、ざっと見る限りだと、末尾の}が1つ多いと思います。

static void InsertBatu(int A[][],int b){ //×の番地の数値を×(-1)に変える
int i,j,batu=-1;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(A[i][j]==b)
A[i][j]=batu;
} // for
} // for
} // static void

} // class marubatu
} // ←?

コンパイラは、エラーこそ出力しますが、それに囚われてはいけません。
状況や、コンパイラの解釈に一番近いエラーを出力するだけなので、その出力があっている事もあれば、間違っている事もあります。
どの行で発生したか? というのが出る場合は、その周辺を調べて、わからない時は誤字脱字や多すぎる文字等を探してみると、解決する事もあります。

ご参考までに。

この回答への補足

うーん、それがないと余計なエラーが増えるんですよね;
}がどうたらって1個エラーが増えるので、}を付け足したんです…
試しに付け足してみたところ、エラーがひとつ増えました。
確かに}は一個多いと思うのですが・・・なんでなんでしょうかね?

補足日時:2011/01/27 15:46
    • good
    • 0

コードをよく調べて、以下の部分が気になりました。


以下の部分を修正してみてはどうでしょうか。


1.
if(A[0][2]==batu && A[1][1]==batu && A[2][0]==batu) return 200;
else return 0;

自分の場合は、else文が入った時は中かっこ({...})で囲み、ブロックにします。以下のような感じですね(C言語で)。ここは好みもあるでしょうが、一行以外では視認性を上げるために行っています。

1行:
 if(obj != NULL) return NULL;

elseあり:
 if(obj != NULL){
  return NULL;
 }else{
  return obj;
 }


2.
static int input(int A[][]) throws IOException{//番地を入力する
int i,j,maru=0,batu=-1;
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int b = Integer.parseInt(str);

for(i=0;i<3;i++){ // for 2
for(j=0;j<3;j++){ // for 1
if((A[i][j]==b && A[i][j]!=maru ) | (A[i][j]==b && A[i][j]!=batu))return b; //番地入力
if((A[i][j]==b && A[i][j]==maru ) | (A[i][j]==b && A[i][j]==batu))
{ // if
System.out.print("正しい番地を入力してください。");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str2 = br.readLine();
int b = Integer.parseInt(str2); //もし番地に○、×の値があった場合は
return b; //値を入力しなおす
} // if
} // for 1

// for 2 ?

while(A[i][j]==b && A[i][j]!=maru && A[i][j]!=batu);
} // static...

中かっこが足りないと思います(自分ではあまり省略表現を使わないので、知らないだけかもしれませんが(汗))。
末尾の中かっこを無くすとエラーが増える原因はこれかもしれませんね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!

お礼日時:2011/01/30 23:32

> C言語よりもJavaは難しいですね…



ってありますけど、基本構造は一緒です。
ifとかforとかの{}も一緒です。

{}の不対応でエラーが出るなら、そして「Cなら簡単」と思っているなら、Javaだということを一旦横に置いておいて、Cとしてプログラムの構造を追いかけてみたらどうです?
    • good
    • 0
この回答へのお礼

c言語にはクラスが無いから楽なんですよねぇ~
一応C言語の構造、見てみようと思います。
回答ありがとうございました!

お礼日時:2011/01/27 23:48

こんばんは。



突っ込みどころ満載のソースだが・・・、
まぁ、それは置いておいて。

括弧の数だけが問題なら、
一番最後の}が要らない。
その代わりに、static void InsertMaru の上に}を追加。
    • good
    • 0
この回答へのお礼

色々ごちゃごちゃしているソースですみません;
おかげでエラーがごっそり減りました!!
回答、ありがとうございました!

お礼日時:2011/01/27 23:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!