2016-08-06 12 views
1

Ich möchte in globaler Boolean Array erstellen, hier Code habe ich versuchtWie boolean-Array in global erstellen - Java

public class BettingHandler extends BaseClientRequestHandler 
{ 
    public static int player[] = new int [100]; 
    public static int i; 
    public static boolean playerAct[]; 

    public void handleClientRequest(User user, ISFSObject params) 
    { 
     RouletteExtension gameExt = (RouletteExtension) getParentExtension(); 
     if (BettingHandler.player[BettingHandler.i] != -1) 
     { 
      trace("player problem"); 
      BettingHandler.player[BettingHandler.i] = user.getPlayerId(); 
      BettingHandler.playerAct[BettingHandler.i] = true; 
      i++; 
     } 
     trace("If this showed, no error"); 
    } 
} 

in Eclipse zu machen nicht redcross Zeichen zeigte, diesen Code in der linken

public static boolean playerAct[]; 

und hier

BettingHandler.playerAct[BettingHandler.i] = true; 

ich mache dies für Handler in SFS2X, so dass ich überprüfen Fehler in SFS2X Zone Monitor aber leider diese Skript laufen nur bis zu diesem

trace("player problem"); 

wenn Sie diesen Code entfernen

BettingHandler.playerAct[BettingHandler.i] = true; 

Skript laufen, bis dieser

trace("If this showed, no error"); 

so weiß ich etwas falsch mit BettingHandler.playerAct[BettingHandler.i] = true;, Wie könnte ich meinen Code beheben?

+0

Initialisieren Sie das Array, bevor Sie es verwenden. – ujulu

Antwort

1

Komisch:

public static int player[] = new int [100]; 
public static int i; 
public static boolean playerAct[]; 

Das erste Array gibt tatsächlich einen Array für 100 Elemente erstellen. Sie überspringen diesen Schritt für Ihr zweites Array. Und Sie sind wirklich überrascht, dass die zweite Ihnen Probleme bereitet?

Außerdem: mit welchem ​​Framework arbeiten Sie auch; Vielleicht solltest du einen Schritt zurückgehen und etwas mehr über die Grundlagen von Java lernen. Zum Beispiel könnte der obige Code funktionieren, wenn er behoben wird; aber alles mit öffentlichen statischen Variablen zu tun ... sieht sehr nach schlechtem Design aus.

+0

Haha, sry ich vermisse es, ehrlich, es ist das erste Mal für mich in Java und stil lernen, Spiel von cocos2d-js und jetzt meinen 4. Monat zu entwickeln, also lerne ich Javascript, aber mein Mentor sagte, dass Spiel muss Multiplayer und SFS2x verwenden wo serverseitig mit Java. Ich denke, ich bin abgelenkt durch plötzliche Änderung der Sprache Programmierung. Ja, es ist besser, wenn ich zuerst die Grundlagen von Java lerne, danke @GhostCat – Pentolan

+1

Umso mehr Gründe, vorsichtig zu sein! Die Sache ist: wenn es wirklich mehrere Spieler geben wird ... könnte es irgendwann sein, dass dein Server mehr als einen Thread laufen lässt? Wenn dies der Fall ist, hat die Verwendung von Global Static potentiell viele Probleme (da Sie eine Menge Locking benötigen, um die Dinge threadsicher zu machen!) – GhostCat

3

Sie haben das Array nie initialisiert, aber Sie versuchen es zu verwenden.

public static boolean playerAct[] = new boolean[100];