2017-08-12 88 views
1

我有一個問題,我相信這可能是一個簡單的修復,但我目前卡住了。作業的左側必須是變量

我試過四處尋找,但找不到有用的東西。

這是我的錯誤:賦值的左手側必須是一個變量

Code error picture here aswell

這是我的代碼:

} else if (token.equals("character-rights")) { 
     player.getRights().ordinal() = Integer.parseInt(token2); 


    public enum PlayerRights { 

    PLAYER(true, true, true, true, false, 60), 
    MODERATOR(true, true, true, true, false, 0), 
    ADMINISTRATOR(false, false, false, false, false, 0), 
    DEVELOPER(true, true, true, true, true, 0), 
    DONATOR(true, true, true, true, true, 10); 

    private boolean canTrade, canDuel, canPk, canSell, debugMode; 
    private int yellTimer; 

    private PlayerRights(boolean canTrade, boolean canDuel, boolean canPk, boolean canSell, boolean debugMode, int yellTimer) { 
     this.canTrade = canTrade; 
     this.canDuel = canDuel; 
     this.canPk = canPk; 
     this.canSell = canSell; 
     this.debugMode = debugMode; 
     this.yellTimer = yellTimer; 
    } 

    private static final ImmutableSet<PlayerRights> STAFF = Sets.immutableEnumSet(ADMINISTRATOR, DEVELOPER); 
    private static final ImmutableSet<PlayerRights> MEMBERS = Sets.immutableEnumSet(MODERATOR, ADMINISTRATOR, DEVELOPER, DONATOR); 
    private static final ImmutableSet<PlayerRights> NORMAL = Sets.immutableEnumSet(PLAYER, DONATOR); 

    public boolean isStaff() { 
     return STAFF.contains(this); 
    } 

    public boolean isMember() { 
     return MEMBERS.contains(this); 
    } 

    public boolean isPlayer() { 
     return NORMAL.contains(this); 
    } 

    public boolean canTrade() { 
     return canTrade; 
    } 

    public boolean canDebug() { 
     return debugMode; 
    } 

    public boolean canSell() { 
     return canSell; 
    } 

    public boolean canDuel() { 
     return canDuel; 
    } 

    public boolean canPk() { 
     return canPk; 
    } 

    public int getYellTimer() { 
     return yellTimer; 
    } 

} 

public PlayerRights playerRights; 

public PlayerRights getRights() { 
    return playerRights; 
} 

最上面的代碼是發生錯誤的地方。我真的很感激一些幫助,會讓我的一天。

+4

'player.getRights()。ordinal()'...這不是一個變量,不能出現在任務的LHS上。你的IDE正在爲你指出這一點。 –

+1

你期望'player.getRights()。ordinal()= Integer.parseInt(token2);'實際上做了什麼?你試圖分配'Integer.parseInt(token2)'的結果是什麼? –

回答

2

枚舉是不可變的。您需要重新分配新的枚舉值,而不是寫東西像

myEnum.ordinal() = 0; 

你必須寫一個switch語句來檢查什麼Integer.parseInt(token2)是,並使用setRights方法。

switch (Integer.parseInt(token2)) { 
    case 0: 
     player.setRights(PlayerRights.PLAYER); 
     break; 
    case 1: 
     player.setRights(PlayerRights.MODERATOR); 
     break; 
    case 2: 
     player.setRights(PlayerRights.ADMINISTRATOR); 
     break; 
    case 3: 
     player.setRights(PlayerRights.DEVELOPER); 
     break; 
    case 4: 
     player.setRights(PlayerRights.DONATOR); 
     break; 
} 

如果您player類沒有setRights方法,你應該添加一個。

0

您需要將以下方法添加到類,它包含公共PlayerRights getRights((播放器))

public void setRights(PlayerRights rights) { 
    this.playerRights = rights; 
} 

現在,請致電行此setter方法,你必須在截屏:

player.setRights(PlayerRights.values()[Integer.parseInt(token2)]; 

準備好捕捉錯誤輸入的數組超出範圍異常。