2017-02-18 4 views
-2
static public charchar box1 = ' ', box2 = ' ', box3 = ' ', box4 = ' ', box5 = ' ', box6 = ' ', box7 = ' ', box8 = ' ', box9 = ' ', input2; 

static public void reset() 
{ 
    char box1 = ' ', box2 = ' ', box3 = ' ', box4 = ' ', box5 = ' ', box6 = ' ', box7 = ' ', box8 = ' ', box9 = ' ', input2; 
    bool isWin = false; 
    int line = 1, nrJogada = 1; 
    ciclo(); 
} 

私がやっていることは明らかにうまくいきません。これを行う方法については長い間検索しましたが、できませんパブリック/プライベート変数の値を変更するにはどうすればよいですか? (これは、ゲームをリセットするために使用されますstatic public変数の値を変更するにはどうすればいいですか?

+2

「charchar」とは何ですか?そして、どのようなエラーメッセージが表示されますか?エラーメッセージが解決策を示している可能性がありますか? –

+0

リセットでは、静的変数と同じ名前のローカル変数を宣言しています。 – Rob

答えて

2

問題は、あなたのresetメソッドがpublicフィールドを隠して新しいローカル変数を宣言していることである。charを削除し、;,を交換!

static public void reset() 
{ 
    box1 = ' '; 
    box2 = ' '; 
    box3 = ' '; 
    box4 = ' '; 
    box5 = ' '; 
    box6 = ' '; 
    box7 = ' '; 
    box8 = ' '; 
    box9 = ' '; 
    bool isWin = false; 
    int line = 1, nrJogada = 1; 
    ciclo(); 
} 

他のローカル変数isWinlinenrJogadaは@Robが指摘するようにreset方法は、終了後に失われます。

をまたここでは、配列が手軽だろう。

public static char[] box = new char[8] {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}; 
public static char input2; 

private static bool isWin = false; 
private static int line = 1, nrJogada = 1; 

static public void reset() 
{ 
    for (int i = 0; i < box.Length; i++) { 
     box[i] = ' '; 
    } 
    isWin = false; 
    line = 1; nrJogada = 1; 
    ciclo(); 
} 

注意変数名の前に型名を書くと、新しい変数が宣言されます。

+1

だから、ウィン、ライン、nrジョガダはどうですか? – Rob

+1

静的なクラスのコンストラクタで配列を初期化している可能性があります。そのため、コードに ''を2回代入しないようにします。おそらく、 'reset'を' Initialize'にリネームして静的コンストラクタから呼び出すでしょう。 – Andrew

関連する問題