Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-创建对象数组_Java_Arrays_Oop - Fatal编程技术网

Java-创建对象数组

Java-创建对象数组,java,arrays,oop,Java,Arrays,Oop,我似乎无法计算出这些对象数组,我正在尝试创建一个存储了值的播放器名称列表,每个值都有一个整数和一些多个字符串 这就是我目前正在研究的,对象阵列是否是正确的存储包?当我尝试在类addPlayer:player[userCount].setName(name)中添加播放器时,错误出现在第237行 错误是:-线程“main”索引中的异常超出范围 import java.util.ArrayList; import java.util.HashMap; import java.util.List; im

我似乎无法计算出这些对象数组,我正在尝试创建一个存储了值的播放器名称列表,每个值都有一个整数和一些多个字符串

这就是我目前正在研究的,对象阵列是否是正确的存储包?当我尝试在类addPlayer:player[userCount].setName(name)中添加播放器时,错误出现在第237行

错误是:-线程“main”索引中的异常超出范围

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class PlayerKarma {

    static Scanner input = new Scanner(System.in);

    static private String[] username = {"name1","name2","test","moretesting","fervor","stackoverflow","imported","quaternion","jetstream"};
    static private int[] karma = {1000,800,800,5,15,-4,-403,54,11,210};
    static private boolean exit = false;
    static private int maxKarmaChange = 10; //How much a players karma can change per day.
    static Player[] userArray = new Player[10000];
    //ArrayList<Player> userArray = new ArrayList<Player>();
    static private int userCount = 0;

    public static void main(String[] args) 
    {
        while (!exit)
        {
        System.out.println("");
        System.out.println("Select an option");
        System.out.println("1: Display a player's karma");
        System.out.println("3: Display all player names and karma");
        System.out.println("5: Add player");

        String command = input.nextLine();
        switch(command)
            {
            //Display player's karma.
            case "1": {
                System.out.println("Enter a player's name: ");
                String inputString = input.nextLine();
                int playerindex = findPlayer(inputString);

                if (playerindex == -1)
                    {
                    System.out.println("Player doesn't exist");
                    }
                else //If the player exists.
                    {
                    System.out.println(userArray[playerindex].getName() + " has a karma of " + karma[userArray[playerindex].getKarma()]);
                    break;
                    }

                break;}

            //Display all player names and karma.
            case "3": {getAllPlayerKarma(); sleep(1500); break;}

            //Add player.
            case "5": {
                System.out.println("Enter a player's name:");
                String inputString = input.nextLine();

                if (userCount > 0) //If there is at least one user in the database.
                {
                int playerindex = findPlayer(inputString);

                if (playerindex == -1)
                    {
                    addPlayer(inputString,0);
                    }
                else //If the player exists.
                    {
                    break;
                    }
                }
                else //If there's no users.
                {
                    addPlayer(inputString,0);
                }
                break;}
            }
        }
    }

    //Class creation for players.
    public class Player
    {
        public String name;
        public int karma;
        //public String[] notes = new String[5];

        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getKarma() {
            return karma;
        }
        public void setKarma(int karma) {
            this.karma = karma;
        }
    }

    private static void getAllPlayerKarma() {
        System.out.println("");
        for (int k = 0; k < userCount; k++)
        {
            System.out.println(userArray[k].getName() + " has a karma of " + userArray[k].getKarma());
        }
    }

    private static void setAllPlayerKarma(String karmaValue) {
        System.out.println("");
        for (int k = 0; k < username.length; k++)
        {
            int parseKarma = Integer.parseInt(karmaValue);
            karma[k] = parseKarma;
        }
        System.out.println("All karma has been set to " + karmaValue);
    }

    private static void addPlayer(String name, int karma) {
        //Adds a new user
        Player[] player = new Player[userCount];
        //Player[userCount] = new Player(userCount);

        player[userCount].setName(name);
        player[userCount].setKarma(karma);
        //userArray[userCount].setName(name);
        //userArray[userCount].setKarma(karma);
        userCount++;
    }

//Returns the index of the player in the database.
private static int findPlayer(String playerName) {
    int playerIndex = -1;

    for (int j = 0; j < userCount; j++)
    {
        System.out.println("Testing name: " + playerName + " against " + userArray[j].getName());
        if (playerName.equals(userArray[j].getName())) {
            playerIndex = j;
            System.out.println("Match");
            break;
        }
        else
        {
            //System.out.println("No match");
        }
    }
    return playerIndex;
    }

private static void sleep(int sleep) {
    try {Thread.sleep(sleep);}
    catch(InterruptedException ex) {
        Thread.currentThread().interrupt();}
    }

}
import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入java.util.Scanner;
公共级玩家卡玛{
静态扫描仪输入=新扫描仪(System.in);
静态私有字符串[]用户名={“name1”、“name2”、“test”、“moretesting”、“fervor”、“stackoverflow”、“imported”、“quaternion”、“jetstream”};
静态私有int[]karma={1000800800,5,15,-4,-403,54,11210};
静态私有布尔退出=false;
静态私有int maxKarmaChange=10;//玩家每天的业力变化量。
静态玩家[]用户数组=新玩家[10000];
//ArrayList userArray=新的ArrayList();
静态私有int userCount=0;
公共静态void main(字符串[]args)
{
当(!退出)
{
System.out.println(“”);
System.out.println(“选择选项”);
System.out.println(“1:显示玩家的业力”);
System.out.println(“3:显示所有玩家名称和业力”);
System.out.println(“5:添加播放器”);
String命令=input.nextLine();
开关(命令)
{
//显示玩家的业力。
案例“1”:{
System.out.println(“输入玩家名称:”);
字符串inputString=input.nextLine();
int playerindex=findPlayer(inputString);
如果(playerindex==-1)
{
System.out.println(“播放器不存在”);
}
else//如果播放机存在。
{
System.out.println(userArray[playerindex].getName()+”的业力为“+karma[userArray[playerindex].getKarma()”;
打破
}
中断;}
//显示所有玩家的名字和业力。
案例“3”:{getAllPlayerKarma();sleep(1500);break;}
//添加玩家。
案例“5”:{
System.out.println(“输入玩家名称:”);
字符串inputString=input.nextLine();
if(userCount>0)//如果数据库中至少有一个用户。
{
int playerindex=findPlayer(inputString);
如果(playerindex==-1)
{
addPlayer(inputString,0);
}
else//如果播放机存在。
{
打破
}
}
否则//如果没有用户。
{
addPlayer(inputString,0);
}
中断;}
}
}
}
//为玩家创建类。
公开课选手
{
公共字符串名称;
公共因果报应;
//公共字符串[]注释=新字符串[5];
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
public int getKarma(){
还业;
}
公共无效业力(内因业力){
这。因果报应=因果报应;
}
}
私有静态void getAllPlayerKarma(){
System.out.println(“”);
for(int k=0;k
您使用值0初始化usercount,因此创建一个大小为0的数组
Player[]Player=new Player[usercount],这将导致错误。

此代码有三个问题:

Player[] player = new Player[userCount];
player[userCount].setName(name);
首先,您每次都在创建一个新数组-我怀疑您是想填充
userArray

其次,您正在创建一个大小为
userCount
的数组,然后尝试使用索引为
userCount
的元素-这是行不通的。数组索引是基于0的,因此,例如,长度为3的元素具有有效的索引0、1和2

第三,你没有创建一个新的
Player
对象,所以
private static void addPlayer(String name, int karma) {
    Player player = new Player();
    player.setKarma(karma);
    player.setName(name);
    userArray[userCount] = player;
    userCount++;
}