Java检查玩家ID

问题描述 投票:-2回答:2

目前正在开发一个项目,我有一个播放器类,我有一个ID,每次创建一个对象时自动递增,然后我的所有对象都在一个数组列表中(PlayerList)。我正在尝试设置标签的文本到播放器名称,但它只是跳过第一个播放器,然后它不会循环回来我得到一个Java运行时错误。

此代码将所有玩家加载到表中:

public void initialize() {
    for (RadioButton button : radios) {
        button.setDisable(true);
        button.setOpacity(1);
    }
    loadPlayers();
    selectPlayer(0);
}

public void selectPlayer(int count){
    for(Player player : PlayerList) {
        if(player.getPlayerID() == count) {
            Player activePlayer = PlayerList.get(count);
            playerName.setVisible(true);
            String name = activePlayer.getName();
            playerName.setText(name);
            System.out.println(count);
            System.out.println(activePlayer);
        }
    }
}

从上面的代码我想循环遍历玩家列表并从计数中拉出玩家,我也有下面的代码按下按钮运行,下面的代码会增加计数或重置计数。

if(count == PlayerList.size()){
        count = 0; //reset the count
    }else{
        count++;
        selectPlayer(count);
    }

当我运行代码时,它总是拉第二个玩家而不是第一个玩家我不确定出了什么问题,任何帮助都会非常感激。

更新

if (count <= size) {
        Player activePlayer = PlayerList.get(count);
        playerName.setVisible(true);
        String name = activePlayer.getName();
        playerName.setText(name);
        System.out.println(count);
    }else if(count == size){
        count=0;
        selectPlayer(count);
    }

这就是我现在得到的,它可以工作,但当我来到最后一个玩家时,我必须按两次按钮才能循环到开始?

java arraylist javafx
2个回答
1
投票

它是第二个玩家,因为你首先增加count。顺序是这样的:

selectPlayer(count);
count++;

0
投票

我认为当你第一次按下按钮时按下代码(假设count == 0),它就会落入“其他”状态。在“else”块中,你要做的第一件事是递增计数(现在,count == 1)。你的第一个玩家可能有ID = 0,而你的第二个玩家ID = 1。要修复,请切换else块中的两行,以便选择播放器THEN增量计数。

© www.soinside.com 2019 - 2024. All rights reserved.