-2

打印屏幕:

Player13
Character Name: Fourz, Class Name: Ninja
Strength: 17, Agility: 21, Stamina: 17, Intellect: 25, Spirit: 20, Health: 52, Mana: 50

我只需要一个循环来检查我的 16 组不同的玩家统计数据并给出 100 的健康奖励。真的很难写一个正确的循环。

public static void sortPlayersByHealth() {

    for (int outer = 0; outer < playerObjectArray.length -1; outer ++) {

        for (int inner = 0; inner < playerObjectArray.length - 1; inner ++ ) {


            int num1 = playerObjectArray[inner].gethealth();
            //must + 1 for it to know to go to the next number and find the > number.
            int num2 = playerObjectArray[inner+1].gethealth();
            if(num1 > num2) {
                Player Player = playerObjectArray[inner];

                playerObjectArray[inner] = playerObjectArray[inner+1];
                playerObjectArray[inner+1] = Player; 
            }

这是我之前编写的一个循环,用于帮助遍历所有 16 名球员的统计数据,并根据他们的健康评分从低到高对它们进行排序。非常感谢您更改此语法以将生命值增加 100 的任何帮助。

抱歉,如果这没有意义,我是编程新手,也是 stackoverflow 新手。

4

3 回答 3

1
public void BumpHealth() {
  for (Player player : playerObjectArray) {
    player.health += 100;
  }
}

当然,假设玩家对象的健康变量称为“健康”。

于 2013-09-04T01:26:25.833 回答
1

如果您不介意公开健康变量,那么答案player.health += 100显然更有效,否则:

实施一个

public void changeHealth(int value) {
    this.health += value;    //as value parameter is a signed integer if you pass negative value you can "remove" too
}

在 Player 类中。假设 health 是该字段的名称。

或者使用 set 和 get 方法

player.setHealth(player.getHealth() + 100);
于 2013-09-04T01:28:05.793 回答
0

你想要做的是两个独立的操作。

  1. 按玩家健康排序
  2. 通过变量增加玩家健康

我建议为第一个选项检查以下两件事:

使用 Array.Sort 使用 Array.Sort 作为比较器

一个简单的例子是这样的:

Player[] myPlayerArray = new Player[2]; //get from whereever
Arrays.sort(myPlayerArray, new Comparator<Player>() {
    public int compare(Player p1, Player p2) {
        return p1.Health.compareTo(p2.Health); //or however you want it ordered
    }
});

您还可以探索更复杂的选项,但目前仅此而已。

至于增加每个玩家的生命值,您可以实现一个简单的forforeach循环来处理它。

喜欢:

int increment = 100;
for (Player player : myPlayers) {
    player.Health += increment;
}

编辑:

添加了一些链接来帮助您:

于 2013-09-04T01:30:44.857 回答