gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:12:10 24 4
gpt4 key购买 nike

PlayerData 类

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;
}
}
}

RoleSelection 类

 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 ");

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

  1. 有一个玩家类,有其数据和 setter
  2. 有一个 Singleton 类,用于保存变量中的值,例如总计(玩家总数)、教师、学生等。Singleton 类还具有创建玩家对象的 ArrayList。
  3. 在 Singleton 类中,我创建了 2 个方法:一个用于在 ArrayList 中创建对象,另一个用于为对象提供工作。
  4. JobSelection 方法试图为每个玩家分配一份工作。例如,如果游戏设置中选择的总玩家为 10 名,选择的教师为 4 名,我必须将 4 名教师工作随机分配给 10 个玩家对象。
  5. 给玩家分配工作后,我在“角色选择”类中编写了代码,根据玩家的工作以不同的方式设置文本。

我的 logcat 或应用程序中没有任何错误。但是,我只收到“你的工作是学生”。我猜 JobSelection 方法效果不佳。所以我尝试修复这些代码

 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;
}
}

但是我没能解决这些问题...

如果有人回答我如何使工作分配并根据他们的工作看到不同的 TextView,我将不胜感激。谢谢

最佳答案

我通过这些代码解决了这个问题:

  for (int i = 0; i < teacher; i++)    
{
a[i] = r.nextInt(total) + 1;
for (int j = 0; j < i; j++)
{
if (a[i] == a[j]) {
i--;
}
}

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

}
}

关于java - 如何解决 Android 中的 For 循环和随机问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59468741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com