Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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 - Fatal编程技术网

Java 如何在给定值的情况下填充二维数组

Java 如何在给定值的情况下填充二维数组,java,arrays,Java,Arrays,我试图将一个类中的值输入到另一个类中声明的2d数组中 当我运行它的时候,我总是得到一个空指针异常,所以我觉得我正在尝试的方式没有很好地工作 它的工作方式主要是嵌套循环将值提供给另一个方法,然后该方法将值输入到2d数组中 谢谢 这是主要的 public class Lab1 { static final int NBPLAYERS = 11; static final int NBMONTHS = 6; public static void main(String[] args) {

我试图将一个类中的值输入到另一个类中声明的2d数组中

当我运行它的时候,我总是得到一个空指针异常,所以我觉得我正在尝试的方式没有很好地工作

它的工作方式主要是嵌套循环将值提供给另一个方法,然后该方法将值输入到2d数组中

谢谢

这是主要的

public class Lab1 {


static final int NBPLAYERS = 11;
static final int NBMONTHS = 6;

public static void main(String[] args) {

    String[] month = {"April", "May","June", "July", "August","September"};
    String[] players = {"Colabello","Donaldson","Smoak","Martin","Goins","Encarnacion","Carrera","Tulowitzki","Pillar","Bautista","Travis"};
    double[][] battingAvg = {
                    {0,.368,.300,.224,.386,.268},
            {.319,.306,.269,.287,.324,.296},
            {.229,.310,.213,.191,.203,.262},
            {.197,.327,.239,.256,.138,.213},
            {.276,.236,.172,.240,.314,.279},
            {.205,.225,.303,.241,.407,.279},
            {0,.302,.282,.244,.333,.231},
            {0,0,0,.357,.214,.237},
            {.273,.181,365,.283,.240,.323},
            {.164,.295,.226,.219,.286,.293},
            {.325,.189,.313,.368,0,0}};

    double [][] onBase = {
                    {.417,.330,.286,.413,.362,.429},        
            {.370,.373,.322,.370,.408,.403},
            {.372,.333,.275,.283,.243,.324},
            {.367,.362,.329,.322,.263,.300},
            {.323,.278,.221,.286,.442,.347},
            {.258,.333,.382,.384,.460,.411},
            {0,.357,.333,.277,.333,.313},
            {0,0,0,.400,.325,.250},
            {.297,.237,.380,.323,.283,.363},
            {.325,.418,.388,.300,.370,.436},
            {.393,.246,.313,.421,0,0}};

    PlayerStats player;

    BlueJays team = new BlueJays(NBPLAYERS, NBMONTHS);

    for(int iPlayer=0; iPlayer<NBPLAYERS; iPlayer++) {
        for(int iMonth=0; iMonth<NBMONTHS; iMonth++) {

             player = new PlayerStats(players[iPlayer], iMonth, battingAvg[iPlayer][iMonth],onBase[iPlayer][iMonth]);

            team.setPlayerStatsCell(player,iPlayer,iMonth);
        }
    }

    team.getHighestSingleMonthBattingAvg();

    team.getHighestOnBase(5);

    team.getLowestBattingAvg(5);

    team.getBestMonth("Bautista");

    team.getBestOverallRecord();

    team.getLowestOnBase();

只是简单地看一下。在某些函数中递增之前,永远不会将类变量“j”重置为0。在某些函数中,“j”的值可能超出索引范围吗?

发布(通过使用添加到问题中)您得到的确切异常,包括完整堆栈跟踪。如果您的
main
方法甚至不调用
BlueJays#gethighestsinglemonthbatingavg()
,您的异常怎么可能来自
main
方法?请检查您提供给我们的main方法副本是否完整。@rslemos我声明了一个BlueJays对象团队。@impact\u Sv您仍然没有调用您展示给我们的
main
片段中的
getHighestSingleMonthBattingAvg
。请仔细检查你的帖子;特别是
main
方法。当然还有更多,但你没有发布。@rslemos哦,我的权利,我更新了它。我的错。试过了,还是得到了空指针。
PlayerStats setPlayerStatsCell(PlayerStats p, int nbPlayers, int nmMonths) {

    for(int i=0; i<nbPlayers; i++) {
        for(int j=0; j<nmMonths; j++) {

            stats[i][j]= p;
        }
    }
        return p;

}
class BlueJays {

int nbPlayers;
int nbMonths;
int j = 0;
int highestBattingAvg;
int highestBattingMonth;
String highestBattingPlayer;
int highestOnBase;
int lowestAvg;
String lowestAvgPlayer;
int highestOverall;
String highestOverallPlayer;
int lowestOnBase;
int lowestOnBaseMonth;
String highestOnBasePlayer;
double bestOverAllMonth;

PlayerStats[][] stats;

public BlueJays(int nbplayers2, int nbmonths2) {
    this.nbPlayers = nbplayers2;
    this.nbMonths = nbmonths2;

    this.stats = new PlayerStats[nbPlayers][nbMonths];

}



PlayerStats setPlayerStatsCell(PlayerStats p, int nbPlayers, int nmMonths) {

    for(int i=0; i<nbPlayers; i++) {
        for(int j=0; j<nmMonths; j++) {

            stats[i][j]= p;
        }
    }
        return p;

}


 PlayerStats getHighestSingleMonthBattingAvg() {



    for(int i = 0; i < nbPlayers; i++)   {
        for(int j = 0; j<nbMonths; j++) {

            stats[i][j].getAvg();

                if(highestBattingAvg < stats[i][j].getAvg()) {
                    highestBattingMonth = stats[i][j].getMonth();
                    highestBattingPlayer = stats[i][j].getName();

                }

                System.out.println("Highest average batting player for the month " + highestBattingMonth + " is " + highestBattingPlayer);

            }
        }

        return null;


    }

 PlayerStats getHighestOnBase(int month) {

    while(j < nbMonths) {

        for(int i = 0; i < nbPlayers; i++)  {
            stats[i][month].getOnBase();

            if(highestOnBase < stats[i][month].getOnBase()) {

            highestOnBasePlayer =  stats[i][month].getName();
        }

        if (i == nbMonths) {
            j++;
            i = 0;

        }
        System.out.println("Highest average onBase player for the month " + month + highestOnBasePlayer);

    }
}


return null;

}


public PlayerStats getLowestBattingAvg(int month) {

    while(j < nbMonths) {

        for(int i = 0; i < nbPlayers; i++)  {
            stats[i][month].getOnBase();

        if(lowestAvg > stats[i][month].getAvg()) {

            lowestAvgPlayer =  stats[i][month].getName();
        }

        if (i == nbMonths) {
            j++;
            i = 0;

        }



    }
    System.out.println("Lowest average batting player for the month " + month + " is " + lowestAvgPlayer);
}
return null;

}

   PlayerStats getBestMonth(String player) {

  while(j < nbMonths) {

    for(int i = 0; i < nbPlayers; i++)  {
        stats[i][j].getBoth();

        if(bestOverAllMonth > stats[i][j].getAvg() && stats[i][j].getName().contains(player)) {


             bestOverAllMonth =  stats[i][j].getBoth();


        }

        if (i == nbMonths) {
            j++;
            i = 0;

        }



    }
    System.out.println("Best month for the player " + player + " is " + bestOverAllMonth);
}
return null;






  }

  public String getBestOverallRecord() {

   while(j < nbMonths) {

       for(int i = 0; i < nbPlayers; i++)  {
           stats[i][j].getBoth();

        if(highestOverall < stats[i][j].getBoth()) {

            highestOverallPlayer =  stats[i][j].getName();
        }

        if (i == nbMonths) {
            j++;
            i = 0;

        }



    }
    System.out.println("Highest overall record is " + highestOverallPlayer);
    }
   return null;



}



   public PlayerStats getLowestOnBase() {

   while(j < nbMonths) {

       for(int i = 0; i < nbPlayers; i++)  {
        stats[i][j].getOnBase();

        if(lowestOnBase > stats[i][j].getOnBase()) {

            double lowestOnBase =  stats[i][j].getOnBase();

            if(lowestOnBase > 0) {

                lowestAvgPlayer = stats[i][j].getName();

            } else {

                i++;
            }
        if (i == nbMonths) {
            j++;
            i = 0;

        } 

    }



}
    System.out.println("Lowest On Base is  " + lowestOnBase);



   }
return null;

 }
}
Exception in thread "main" java.lang.NullPointerException
at BlueJays.getHighestSingleMonthBattingAvg(BlueJays.java:52)
at Lab1.main(JonathanRoy_Lab1.java:52)