开发者社区> 问答> 正文

如何解决Android中的For循环和随机问题?

public class PlayerData{

int id; // id means Player's order
boolean isTeacher;

public PlayerData() {

}

public void setID(int id) {
    this.id = id;
}

public void setTeacher() {
    isTeacher = true;
}

}

public class Singleton {

public int time;
public int total; // number of total players
public int teacher; // number of teachers
public int student; // number of students
-
public int count = 1;
public String keyWord; // 
ArrayList<PlayerData> playerArrayList = new ArrayList<PlayerData>();

// method init creates Objects of players
public void init() {
    for (int i = 1; i <= total; i++) {
        PlayerData player = new PlayerData();
        player.setID(i);  // set id
        playerArrayList.add(player); // add player Object to ArrayList
    }
}

public void JobSelection() {

    int a[] = new int[teacher]; // Make array to the number I will select
    Random r = new Random(); // Random Object
    PlayerData player = new PlayerData();
    for (int i = 0; i < teacher; i++)    // for loop to select Teachers 
    {
        a[i] = r.nextInt(total) + 1; //select a number from 1~total and Save in a[0]~a[total]
        for (int j = 0; j < i; j++) //for loop to avoid overlap
        {
            if (a[i] == a[j]) {
                i--;
            }
        }

        if (a[i] == player.id) { 
            playerArrayList.get(player.id - 1).isTeacher = true;
        }
    }
} ...

public class RoleSelection extends AppCompatActivity {
Singleton s1 = Singleton.getInstance();
PlayerData player = new PlayerData();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_role_selection07_03);

    TextView t1 = (TextView) findViewById(R.id.textJobConfirm);

    if (s1.playerArrayList.get(s1.player.id-1).isTeacher == true) {
        t1.setText(" You job is Teacher ");
    } else {
        t1.setText(" Your job is Student ");

我正在制作一个应用程序游戏,其工作仅包括教师和学生。上面的代码显示了我的应用。

有一个具有其数据和设置器的播放器类 有一个Singleton类,可将值保存在变量中,例如总计(总玩家),教师,学生等。Singleton类还具有创建播放器对象的ArrayList。 在Singleton类中,我做了两种方法:一种用于在ArrayList中创建对象,另一种用于为对象提供工作。 JobSelection方法正在尝试给每个玩家一个工作。例如,如果在游戏设置中选择的总玩家为10,而选择的老师为4,则我必须将10个玩家对象随机分配给4个老师。 给玩家一份工作后,我在“角色选择”类中编写了代码,以考虑到玩家的工作,以不同的方式设置了setText。 我的logcat或我的应用程序没有任何错误。但是,我只收到“您的工作是学生”。我猜JobSelection方法效果不好。因此,我尝试修复这些代码`for(int i = 0; i <教师; i ++)// for循环以选择教师{a [i] = r.nextInt(total)+ 1; //从1到总数中选择一个数字,并保存在a [0]〜a [total]中,用于(int j = 0; j <i; j ++)// for循环以避免重叠{if(a [i] == a [j]){i--; }}

if (a[i] == player.id) { 
      playerArrayList.get(player.id - 1).isTeacher = true;
  }
}

`

但是我没有解决这些问题...如果有人回答我如何分配工作并根据他们的工作看到不同的TextView,将不胜感激。谢谢

展开
收起
几许相思几点泪 2019-12-24 21:16:42 615 0
1 条回答
写回答
取消 提交回答
  • 这个肯定有4次请求,你可以打印一下4次返回的结果,你适配器里setNewData(mDeviceItems)方法怎么写的,我怀疑你是直接赋值的,不是add的

    2021-02-08 00:22:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载