难以导航2d与另一个2d int数组相关的字符串数组

时间:2014-12-04 03:30:01

标签: java arrays multidimensional-array logic

所以我有一个班级,其中包含大量的统计信息以及关于“游戏玩家”的信息。我正在尝试为通过RNG实现的某些统计目标实施模拟奖杯系统。 我有一个2d int阵列,其中包含奖杯等级/等级的值,曾经将奖杯从青铜器升级为银牌等,以及相应的2d String数组,其中包含这样的奖杯水平。在测试中,现在未使用的方法似乎实际上只为某些类型提供了奖杯。我现在拥有的是一条我认为我需要遵循的道路才能实现这一目标。我有一个名为getBadges(int requestedStat)的方法,它为另一个数组获取一个索引值来查看该统计数据奖杯。在该方法中是一个for循环,它将方法的参数与两个2d数组进行比较,以确定stat的值(存储在另一个数组中)是否有资格获得铜牌,银牌或金牌奖杯。我的主要问题是我迷失了如何在不超出索引范围的情况下访问我的2d数组中的这些不同数据点。更不用说当我设置一堆if-else语句时,我的测试输出总是产生奖杯的名称,但没有奖杯级别。像这样:

Healer: No Badge 
Explorer: No Badge 
Socialite: No Badge 
Contributor: No Badge 

随着技能点上升,徽章等级也会上升(即从“无徽章”变为“青铜”等)。这是逻辑错误还是语法错误?尽管我的伪代码努力,但我对代码中发生的事情感到非常困惑。这是Gamer类:

package GamerProject;

import java.io.Serializable;
import java.util.Comparator;

public class Gamer implements Serializable, Comparable<Gamer> {

    private String playerName;
    private static final int HEALTH_POINTS_RESD = 23;
    private static final int AREAS_VISITED = 200;
    private static final int PLAYERS_ENCOUNTERED = 175;
    private static final int MAPS_CREATED = 1500;
    private static final int ITEMS_GATHERED = 20;
    private static final int ITEMS_REPAIRED = 100;
    private static final int ITEMS_MERGED = 125;
    private static final int TOP_SCORES = 250;
    private static final int DMG_POINTS_DEALT = 17;
    private static final int MAPS_COMPLETED = 750;
    private static final int LEVEL2 = 10000;
    private static final int LEVEL3 = 25000;
    private static final int LEVEL4 = 80000;
    private static final int LEVEL5 = 150000;
    private static final int LEVEL6 = 300000;
    private static final int LEVEL7 = 1000000;
    private static final int LEVEL8 = 2200000;
    private static final int LEVEL9 = 4500000;
    private static final int LEVEL10 = 10000000;
    private static final int LEVEL11 = 20000000;
    private static final int LEVEL12 = 35000000;
    private final int[] gamerStatValues = new int[10];
    private final int[] gamerActions = {HEALTH_POINTS_RESD, AREAS_VISITED, PLAYERS_ENCOUNTERED, MAPS_CREATED,
        ITEMS_GATHERED, ITEMS_REPAIRED, ITEMS_MERGED, TOP_SCORES, DMG_POINTS_DEALT, MAPS_COMPLETED};
    private final int[] expValues = {LEVEL2, LEVEL3, LEVEL4, LEVEL5, LEVEL6, LEVEL7,
        LEVEL8, LEVEL9, LEVEL10, LEVEL11, LEVEL12};
    private final int[][] badgePoints = {
        {0, 2000, 10000, 30000, 100000, 200000},
        {0, 50, 1000, 5000, 17000, 40000},
        {0, 100, 1000, 2000, 10000, 30000},
        {0, 3, 10, 20, 90, 150},
        {0, 2000, 10000, 30000, 100000, 200000},
        {0, 100, 1000, 5000, 15000, 40000},
        {0, 100, 500, 2000, 10000, 40000},
        {0, 20, 200, 1000, 5000, 20000},
        {0, 2000, 10000, 30000, 100000, 300000},
        {0, 10, 50, 200, 500, 5000}};
    private final String[] badgeTitles = {"Healer: ", "Explorer: ", "Socialite: ", "Contributor: ",
        "Hoarder: ", "Fixer: ", "Joiner: ", "Leader: ", "Punisher: ", "Obsessed: ",};
    private final String[] badgeRanks = {"No Badge ", "Tin ", "Bronze ", "Silver ", "Gold ", "Platinum "};

    Gamer() {
        playerName = "";

    }

    public int getTotalExp() {
        int totalExp = 0;
        for (int i = 0; i < gamerStatValues.length; i++) {
            totalExp += (gamerStatValues[i] * gamerActions[i]);
        }
        return totalExp;
    }

    public int getLevel() {
        int playerLevel = 1;
        int totalExp = getTotalExp();
        for (int i = 0; i < expValues.length; i++) {
            if (totalExp >= expValues[i]) {
                playerLevel += 1;
                //System.out.println(getTotalExp());
            }
        }
        return playerLevel;
    }

    public String getBadge(int requestedStat) {
        String badgeOutput = "";
        //index = 0;
        if (requestedStat >= 0 && requestedStat <=9) {
            for (int i = 0; i < badgeRanks.length; i++) {//not sure how to get around going out of the array bounds
                if (gamerActions[requestedStat] >= badgePoints[requestedStat][i]
                        && gamerActions[requestedStat] < badgePoints[requestedStat][i + 1]) {
                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[i];
                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][i+1]
                        && gamerActions[requestedStat] < badgePoints[requestedStat][i + 2]) {
                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[i+1];
                }
            }
            //did this as an extraneous solution. Still doesn't work
//            if (gamerActions[requestedStat] >= badgePoints[requestedStat][index]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 1]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+1]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 2]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+1];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+2]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 3]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+2];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+3]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 4]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+3];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+4]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 5]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+4];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+5]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 6]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+5];
//                } else {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+6];
//                }
//            

        } else {
            badgeOutput = "No Badges Available";
        }
        return badgeOutput;
    }

    //Incomplete Method
    public String getBadges() {
        String badgeOutput = "Badges: ";
        for (int i = 0; i < badgeTitles.length; i++) {
//            if (gamerActions[i]) {
//                
//            }
        }
        return badgeOutput;
    }

    public String getPlayerName() {
        return playerName;
    }

    public int getHealthPointsResd() {
        return gamerStatValues[0];
    }

    public int getAreasVisited() {
        return gamerStatValues[1];
    }

    public int getPlayersEncountered() {
        return gamerStatValues[2];
    }

    public int getMapsCreated() {
        return gamerStatValues[3];
    }

    public int getItemsGathered() {
        return gamerStatValues[4];
    }

    public int getItemsRepaired() {
        return gamerStatValues[5];
    }

    public int getItemsMerged() {
        return gamerStatValues[6];
    }

    public int getTopScores() {
        return gamerStatValues[7];
    }

    public int getDmgPointsDealt() {
        return gamerStatValues[8];
    }

    public int getMapsCompleted() {
        return gamerStatValues[9];
    }

    //Unused Method
    public void updateRandomGamerAction(int intValue) {
        if (intValue == 0) {
            gamerActions[0]+=1;
        } else if (intValue == 1) {
            gamerActions[1]+=1;
        } else if (intValue == 2) {
            gamerActions[2]+=1;
        } else if (intValue == 3) {
            gamerActions[3]+=1;
        } else if (intValue == 4) {
            gamerActions[4]+=1;
        } else if (intValue == 5) {
            gamerActions[5]+=1;
        } else if (intValue == 6) {
            gamerActions[6]+=1;
        } else if (intValue == 7) {
            gamerActions[7]+=1;
        } else if (intValue == 8) {
            gamerActions[8]+=1;
        } else {
            gamerActions[9]+=1;
        }
    }

    public String setPlayerName(String playerName) {
        this.playerName = playerName;
        return this.playerName;
    }

    public int setHealthPointsResd(int healthPointsResd) {
        if (healthPointsResd >= 0) {
            gamerStatValues[0] = healthPointsResd;
            return gamerStatValues[0];
        } else {
            return gamerStatValues[0];
        }
    }

    public int setAreasVisited(int areasVisited) {
        if (areasVisited >= 0) {
            gamerStatValues[1] = areasVisited;
            return gamerStatValues[1];
        } else {
            return gamerStatValues[1];
        }
    }

    public int setPlayersEncountered(int playersEncountered) {
        if (playersEncountered >= 0) {
            gamerStatValues[2] = playersEncountered;
            return gamerStatValues[2];
        } else {
            return gamerStatValues[2];
        }
    }

    public int setMapsCreated(int mapsCreated) {
        if (mapsCreated >= 0) {
            gamerStatValues[3] = mapsCreated;
            return gamerStatValues[3];
        } else {
            return gamerStatValues[3];
        }
    }

    public int setItemsGathered(int itemsGathered) {
        if (itemsGathered >= 0) {
            gamerStatValues[4] = itemsGathered;
            return gamerStatValues[4];
        } else {
            return gamerStatValues[4];
        }
    }

    public int setItemsRepaired(int itemsRepaired) {
        if (itemsRepaired >= 0) {
            gamerStatValues[5] = itemsRepaired;
            return gamerStatValues[5];
        } else {
            return gamerStatValues[5];
        }
    }

    public int setItemsMerged(int itemsMerged) {
        if (itemsMerged >= 0) {
            gamerStatValues[6] = itemsMerged;
            return gamerStatValues[6];
        } else {
            return gamerStatValues[6];
        }
    }

    public int setTopScores(int topScores) {
        if (topScores >= 0) {
            gamerStatValues[7] = topScores;
            return gamerStatValues[7];
        } else {
            return gamerStatValues[7];
        }
    }

    public int setDmgPointsDealt(int dmgPointsDealt) {
        if (dmgPointsDealt >= 0) {
            gamerStatValues[8] = dmgPointsDealt;
            return gamerStatValues[8];
        } else {
            return gamerStatValues[8];
        }
    }

    public int setMapsCompleted(int mapsCompleted) {
        if (mapsCompleted >= 0) {
            gamerStatValues[9] = mapsCompleted;
            return gamerStatValues[9];
        } else {
            return gamerStatValues[9];
        }
    }

    public void setStatsToZero(){
        for (int i = 0; i < gamerActions.length; i++) {
            gamerActions[i] = 0;
        }
    }
    public String statsString() {
        return "Stats: " + "Health Points Restored = " + gamerStatValues[0]
                + ",\n Areas Visited = " + gamerStatValues[1] + ", PlayersEncountered = " + gamerStatValues[2]
                + ", Maps Created = " + gamerStatValues[3] + ",\n Items Gathered = " + gamerStatValues[4]
                + ", Items Repaired = " + gamerStatValues[5] + ", Items Merged = " + gamerStatValues[6]
                + ",\n Top Scores = " + gamerStatValues[7] + ", Damage Points Dealt =  " + gamerStatValues[8]
                + ", Maps Completed = " + gamerStatValues[9] + '}';
    }

    public String shortDecription() {
        return String.format("%16s: Level %2d, Experience Points: %,10d",
                playerName, this.getLevel(), this.getTotalExp());
    }

    @Override
    public String toString() {
        return "Gamer{" + "Player Name = " + playerName + " Player Stats: "
                + "Health Points Restored = " + gamerStatValues[0]
                + ",\n Areas Visited = " + gamerStatValues[1] + ", PlayersEncountered = " + gamerStatValues[2]
                + ", Maps Created = " + gamerStatValues[3] + ",\n Items Gathered = " + gamerStatValues[4]
                + ", Items Repaired = " + gamerStatValues[5] + ", Items Merged = " + gamerStatValues[6]
                + ",\n Top Scores = " + gamerStatValues[7] + ", Damage Points Dealt =  " + gamerStatValues[8]
                + ", Maps Completed = " + gamerStatValues[9] + '}';
    }

    @Override
    public int compareTo(Gamer player) {
        if (this.getTotalExp() > player.getTotalExp()) {
            return 1;
        } else if (this.getTotalExp() == player.getTotalExp()) {
            return 0;
        } else {
            return -1;
        }
    }

}

这是我正在测试它的驱动程序:

package GamerProject;

import java.util.Random;

public class Program7Driver {

    private static final int rngRange = 10;
    private static final Gamer[] gamers = new Gamer[10];
    private static final String[] gamerNames = {"BestGamer99", "CdrShepardN7",
        "Gandalf_The_Cool", "SharpShooter01", "TheDragonborn", "SithLord01",
        "MrWolfenstien", "Goldeneye007", "DungeonMaster91", "MasterThief","TheDarkKnight"};



    public static void main(String[] args) {
        Random rand = new Random();
        for (int i = 0; i < gamers.length; i++) {
            gamers[i] = new Gamer();
            gamers[i].setPlayerName(gamerNames[i]);
            gamers[i].setStatsToZero();

        }
//        for (int i = 0; i < 200000; i++) {
//            int rng = rand.nextInt(rngRange);
//            gamers[rng].setRandomGamerAction(rng);
//        }
        int count = 0;
        for (int i = 0; i < 20000; i++) {
            int rng = rand.nextInt(rngRange);
            System.out.println(gamers[0].getBadge(count));
            //System.out.println(gamers[0].toString());
            //gamers[0].updateRandomGamerAction(rng);
            if (rng == 0) {
                gamers[0].setHealthPointsResd(gamers[0].getHealthPointsResd()+1);
            } else if (rng == 1) {
                gamers[0].setAreasVisited(gamers[0].getAreasVisited()+1);
            } else if (rng == 2) {
                gamers[0].setPlayersEncountered(gamers[0].getPlayersEncountered()+1);
            } else if (rng == 3) {
                gamers[0].setMapsCreated(gamers[0].getMapsCreated()+1);
            } else if (rng == 4) {
                gamers[0].setItemsGathered(gamers[0].getItemsGathered()+1);
            } else if (rng == 5) {
                gamers[0].setItemsRepaired(gamers[0].getItemsRepaired()+1);
            } else if (rng == 6) {
                gamers[0].setItemsMerged(gamers[0].getItemsMerged()+1);
            } else if (rng == 7) {
                gamers[0].setTopScores(gamers[0].getTopScores()+1);
            } else if (rng == 8) {
                gamers[0].setDmgPointsDealt(gamers[0].getDmgPointsDealt()+1);
            } else  {
                gamers[0].setMapsCompleted(gamers[0].getMapsCompleted()+1);
            }

            count += 1;
            if (count == 10) {
                count -= 10;
            }
           // System.out.println(gamers[i].statsString());     
        }
    }
}

1 个答案:

答案 0 :(得分:1)

好的,我做了一些改变。看看这是否符合您的要求:

package GamerProject;

import java.io.Serializable;
import java.util.Comparator;

public class Gamer implements Serializable, Comparable<Gamer> {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String playerName;
    private static final int HEALTH_POINTS_RESD = 23;
    private static final int AREAS_VISITED = 200;
    private static final int PLAYERS_ENCOUNTERED = 175;
    private static final int MAPS_CREATED = 1500;
    private static final int ITEMS_GATHERED = 20;
    private static final int ITEMS_REPAIRED = 100;
    private static final int ITEMS_MERGED = 125;
    private static final int TOP_SCORES = 250;
    private static final int DMG_POINTS_DEALT = 17;
    private static final int MAPS_COMPLETED = 750;
    private static final int LEVEL2 = 10000;
    private static final int LEVEL3 = 25000;
    private static final int LEVEL4 = 80000;
    private static final int LEVEL5 = 150000;
    private static final int LEVEL6 = 300000;
    private static final int LEVEL7 = 1000000;
    private static final int LEVEL8 = 2200000;
    private static final int LEVEL9 = 4500000;
    private static final int LEVEL10 = 10000000;
    private static final int LEVEL11 = 20000000;
    private static final int LEVEL12 = 35000000;
    private final int[] gamerStatValues = new int[10];
    private final int[] gamerActions = {HEALTH_POINTS_RESD, AREAS_VISITED, PLAYERS_ENCOUNTERED, MAPS_CREATED,
        ITEMS_GATHERED, ITEMS_REPAIRED, ITEMS_MERGED, TOP_SCORES, DMG_POINTS_DEALT, MAPS_COMPLETED};
    private final int[] expValues = {LEVEL2, LEVEL3, LEVEL4, LEVEL5, LEVEL6, LEVEL7,
        LEVEL8, LEVEL9, LEVEL10, LEVEL11, LEVEL12};
    private final int[][] badgePoints = {
        {0, 2000, 10000, 30000, 100000, 200000},
        {0, 50, 1000, 5000, 17000, 40000},
        {0, 100, 1000, 2000, 10000, 30000},
        {0, 3, 10, 20, 90, 150},
        {0, 2000, 10000, 30000, 100000, 200000},
        {0, 100, 1000, 5000, 15000, 40000},
        {0, 100, 500, 2000, 10000, 40000},
        {0, 20, 200, 1000, 5000, 20000},
        {0, 2000, 10000, 30000, 100000, 300000},
        {0, 10, 50, 200, 500, 5000}};
    private final String[] badgeTitles = {"Healer: ", "Explorer: ", "Socialite: ", "Contributor: ",
        "Hoarder: ", "Fixer: ", "Joiner: ", "Leader: ", "Punisher: ", "Obsessed: ",};
    private final String[] badgeRanks = {"No Badge ", "Tin ", "Bronze ", "Silver ", "Gold ", "Platinum "};

    Gamer() {
        playerName = "";

    }

    public int getTotalExp() {
        int totalExp = 0;
        for (int i = 0; i < gamerStatValues.length; i++) {
            totalExp += (gamerStatValues[i] * gamerActions[i]);
        }
        return totalExp;
    }

    public int getLevel() {
        int playerLevel = 1;
        int totalExp = getTotalExp();
        for (int i = 0; i < expValues.length; i++) {
            if (totalExp >= expValues[i]) {
                playerLevel += 1;
                //System.out.println(getTotalExp());
            }
        }
        return playerLevel;
    }

    public String getBadge(int requestedStat) {
        String badgeOutput = "";
        //index = 0;
        if (requestedStat >= 0 && requestedStat <=9) {
            for (int i = 0; i < badgeRanks.length; i++) {//not sure how to get around going out of the array bounds
                if (gamerActions[requestedStat] >= badgePoints[requestedStat][i]
                        && gamerActions[requestedStat] < badgePoints[requestedStat][i + 1]) {
                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[i];
                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][i+1]
                        && gamerActions[requestedStat] < badgePoints[requestedStat][i + 2]) {
                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[i+1];
                }
            }
            //did this as an extraneous solution. Still doesn't work
//            if (gamerActions[requestedStat] >= badgePoints[requestedStat][index]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 1]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+1]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 2]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+1];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+2]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 3]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+2];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+3]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 4]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+3];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+4]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 5]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+4];
//                } else if (gamerActions[requestedStat] >= badgePoints[requestedStat][index+5]
//                        && gamerActions[requestedStat] < badgePoints[requestedStat][index + 6]) {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+5];
//                } else {
//                    badgeOutput = badgeTitles[requestedStat] + badgeRanks[index+6];
//                }
//            

        } else {
            badgeOutput = "No Badges Available";
        }
        return badgeOutput;
    }

    //Incomplete Method
    public String getBadges() {
        String badgeOutput = "Badges: ";
        for (int i = 0; i < badgeTitles.length; i++) {
//            if (gamerActions[i]) {
//                
//            }
        }

        return badgeOutput;
    }

    public String getPlayerName() {
        return playerName;
    }

    public int getHealthPointsResd() {
        return gamerStatValues[0];
    }

    public int getAreasVisited() {
        return gamerStatValues[1];
    }

    public int getPlayersEncountered() {
        return gamerStatValues[2];
    }

    public int getMapsCreated() {
        return gamerStatValues[3];
    }

    public int getItemsGathered() {
        return gamerStatValues[4];
    }

    public int getItemsRepaired() {
        return gamerStatValues[5];
    }

    public int getItemsMerged() {
        return gamerStatValues[6];
    }

    public int getTopScores() {
        return gamerStatValues[7];
    }

    public int getDmgPointsDealt() {
        return gamerStatValues[8];
    }

    public int getMapsCompleted() {
        return gamerStatValues[9];
    }

    //Unused Method
    public void updateRandomGamerAction(int intValue) {
        if (intValue == 0) {
            gamerActions[0]+=1;
        } else if (intValue == 1) {
            gamerActions[1]+=1;
        } else if (intValue == 2) {
            gamerActions[2]+=1;
        } else if (intValue == 3) {
            gamerActions[3]+=1;
        } else if (intValue == 4) {
            gamerActions[4]+=1;
        } else if (intValue == 5) {
            gamerActions[5]+=1;
        } else if (intValue == 6) {
            gamerActions[6]+=1;
        } else if (intValue == 7) {
            gamerActions[7]+=1;
        } else if (intValue == 8) {
            gamerActions[8]+=1;
        } else {
            gamerActions[9]+=1;
        }
    }

    public String setPlayerName(String playerName) {
        this.playerName = playerName;
        return this.playerName;
    }

    public int setHealthPointsResd(int healthPointsResd) {
        if (healthPointsResd >= 0) {
            gamerStatValues[0] = healthPointsResd;
            return gamerStatValues[0];
        } else {
            return gamerStatValues[0];
        }
    }

    public int setAreasVisited(int areasVisited) {
        if (areasVisited >= 0) {
            gamerStatValues[1] = areasVisited;
            return gamerStatValues[1];
        } else {
            return gamerStatValues[1];
        }
    }

    public int setPlayersEncountered(int playersEncountered) {
        if (playersEncountered >= 0) {
            gamerStatValues[2] = playersEncountered;
            return gamerStatValues[2];
        } else {
            return gamerStatValues[2];
        }
    }

    public int setMapsCreated(int mapsCreated) {
        if (mapsCreated >= 0) {
            gamerStatValues[3] = mapsCreated;
            return gamerStatValues[3];
        } else {
            return gamerStatValues[3];
        }
    }

    public int setItemsGathered(int itemsGathered) {
        if (itemsGathered >= 0) {
            gamerStatValues[4] = itemsGathered;
            return gamerStatValues[4];
        } else {
            return gamerStatValues[4];
        }
    }

    public int setItemsRepaired(int itemsRepaired) {
        if (itemsRepaired >= 0) {
            gamerStatValues[5] = itemsRepaired;
            return gamerStatValues[5];
        } else {
            return gamerStatValues[5];
        }
    }

    public int setItemsMerged(int itemsMerged) {
        if (itemsMerged >= 0) {
            gamerStatValues[6] = itemsMerged;
            return gamerStatValues[6];
        } else {
            return gamerStatValues[6];
        }
    }

    public int setTopScores(int topScores) {
        if (topScores >= 0) {
            gamerStatValues[7] = topScores;
            return gamerStatValues[7];
        } else {
            return gamerStatValues[7];
        }
    }

    public int setDmgPointsDealt(int dmgPointsDealt) {
        if (dmgPointsDealt >= 0) {
            gamerStatValues[8] = dmgPointsDealt;
            return gamerStatValues[8];
        } else {
            return gamerStatValues[8];
        }
    }

    public int setMapsCompleted(int mapsCompleted) {
        if (mapsCompleted >= 0) {
            gamerStatValues[9] = mapsCompleted;
            return gamerStatValues[9];
        } else {
            return gamerStatValues[9];
        }
    }

    public void setStatsToZero(){
        for (int i = 0; i < gamerActions.length; i++) {
            gamerActions[i] = 0;
        }
    }
    public String statsString() {
        return "Stats: " + "Health Points Restored = " + gamerStatValues[0]
                + ",\n Areas Visited = " + gamerStatValues[1] + ", PlayersEncountered = " + gamerStatValues[2]
                + ", Maps Created = " + gamerStatValues[3] + ",\n Items Gathered = " + gamerStatValues[4]
                + ", Items Repaired = " + gamerStatValues[5] + ", Items Merged = " + gamerStatValues[6]
                + ",\n Top Scores = " + gamerStatValues[7] + ", Damage Points Dealt =  " + gamerStatValues[8]
                + ", Maps Completed = " + gamerStatValues[9] + '}';
    }

    public String shortDecription() {
        return String.format("%16s: Level %2d, Experience Points: %,10d",
                playerName, this.getLevel(), this.getTotalExp());
    }

    @Override
    public String toString() {
        return "Gamer{" + "Player Name = " + playerName + " Player Stats: "
                + "Health Points Restored = " + gamerStatValues[0]
                + ",\n Areas Visited = " + gamerStatValues[1] + ", PlayersEncountered = " + gamerStatValues[2]
                + ", Maps Created = " + gamerStatValues[3] + ",\n Items Gathered = " + gamerStatValues[4]
                + ", Items Repaired = " + gamerStatValues[5] + ", Items Merged = " + gamerStatValues[6]
                + ",\n Top Scores = " + gamerStatValues[7] + ", Damage Points Dealt =  " + gamerStatValues[8]
                + ", Maps Completed = " + gamerStatValues[9] + '}';
    }

    @Override
    public int compareTo(Gamer player) {
        if (this.getTotalExp() > player.getTotalExp()) {
            return 1;
        } else if (this.getTotalExp() == player.getTotalExp()) {
            return 0;
        } else {
            return -1;
        }
    }

}

另一个:

package GamerProject;

import java.util.Random;

public class Program7Driver {

    private static final int rngRange = 10;
    private static final Gamer[] gamers = new Gamer[10];
    private static final String[] gamerNames = {"BestGamer99", "CdrShepardN7",
        "Gandalf_The_Cool", "SharpShooter01", "TheDragonborn", "SithLord01",
        "MrWolfenstien", "Goldeneye007", "DungeonMaster91", "MasterThief","TheDarkKnight"};



    public static void main(String[] args) {
        Random rand = new Random();
        for (int i = 0; i < gamers.length; i++) {
            gamers[i] = new Gamer();
            gamers[i].setPlayerName(gamerNames[i]);
            gamers[i].setStatsToZero();
        }
//        for (int i = 0; i < 200000; i++) {
//            int rng = rand.nextInt(rngRange);
//            gamers[rng].setRandomGamerAction(rng);
//        }
        int count = 0;
        for (int i = 0; i < gamers.length; i++) {
            int rng = rand.nextInt(rngRange);
            System.out.println(gamers[i]);
            //System.out.println(gamers[0].toString());
            //gamers[0].updateRandomGamerAction(rng);
            if (rng == 0) {
                gamers[0].setHealthPointsResd(gamers[0].getHealthPointsResd()+1);
            } else if (rng == 1) {
                gamers[0].setAreasVisited(gamers[0].getAreasVisited()+1);
            } else if (rng == 2) {
                gamers[0].setPlayersEncountered(gamers[0].getPlayersEncountered()+1);
            } else if (rng == 3) {
                gamers[0].setMapsCreated(gamers[0].getMapsCreated()+1);
            } else if (rng == 4) {
                gamers[0].setItemsGathered(gamers[0].getItemsGathered()+1);
            } else if (rng == 5) {
                gamers[0].setItemsRepaired(gamers[0].getItemsRepaired()+1);
            } else if (rng == 6) {
                gamers[0].setItemsMerged(gamers[0].getItemsMerged()+1);
            } else if (rng == 7) {
                gamers[0].setTopScores(gamers[0].getTopScores()+1);
            } else if (rng == 8) {
                gamers[0].setDmgPointsDealt(gamers[0].getDmgPointsDealt()+1);
            } else  {
                gamers[0].setMapsCompleted(gamers[0].getMapsCompleted()+1);
            }

            count += 1;
            if (count == 10) {
                count -= 10;
            }
           // System.out.println(gamers[i].statsString());     
        }
    }
}