类型不匹配:无法从int转换为int []

时间:2011-11-13 07:28:56

标签: java arrays eclipse random

我似乎无法专门解决此问题。我找了它。 作业是实施棒球运动员球衣号码,击球次数和步行次数的应用。必须使用20列和3行的二维数组。 我正在设置线路,为球员的击球次数和结果制作随机数。然而,我得到一个无法从int转换为int []的错误。 我已经阅读了几个同样问题的其他问题,似乎没有人帮助我。我可能不理解他们,但我仍然无法解决问题。 谢谢, d

import java.util.Random;

public class Stats

public static void main(String[] args) 
{

    int[][] array = { { 1, 2, 3 },
                      { 4, 5, 6 },
                      { 7, 8, 9 }, 
                      { 10, 11, 12 },
                      { 13, 14, 15 },
                      { 16, 17, 18 },
                      { 19, 20, 21 },
                      { 22, 23, 24 },
                      { 25, 26, 27 },
                      { 28, 29, 30 },
                      { 31, 32, 33 }, 
                      { 34, 35, 36 }, 
                      { 37, 38, 39 },
                      { 40, 41, 42 },
                      { 43, 44, 45 },
                      { 46, 47, 48 },
                      { 49, 50, 51 },
                      { 52, 53, 54 },
                      { 55, 56, 57 },
                      { 58, 59, 60 } };

    Random randomNumbers = new Random();

    for (int row = 0; row < array.length; row++ )
     {

         for (int column = 0; column < array[ row ].length; column++ )
         {
             int counter = 0;

             array[ counter ] = randomNumbers.nextInt() //Error here

             System.out.print( counter + "\t " + array[ counter ] + "\t");

             counter++;
         }

         System.out.println(" ");
     }

}
}

3 个答案:

答案 0 :(得分:7)

您需要访问这两个索引。

array[ row ][ column ] = randomNumbers.nextInt(); //Error here

这也可以写成

int[] oneRow = array[row];
int oneCell = oneRow[column];

如果您将int[] oneRow = array[row];放在内部循环上方,则可以使用array[row]替换内循环中的所有oneRow

此外,counter将始终为0,每次在声明内部循环时将值重置为0.

您可能想要使用计数器,但将其放在内循环之外。

int counter = 0;
for (int column = 0; column < array[ row ].length; column++ )
{
     array[ row ][ counter ] = randomNumbers.nextInt() //Error here

答案 1 :(得分:3)

我认为在为数组变量赋值之前必须指定所有维度。例如array [0] [1]而不是array [0]

答案 2 :(得分:1)

@Carlos 抱歉错误...我意外地使用了c#语法 我使用整数类只是为了说明为什么有时需要新关键字...

The Best Approach is to declare the array and initialise it at runtime

class BaseBall {
Integer[][] array ;
int noOfBaseBallPlayers;

public BaseBall(int noOfBaseBallPlayers)
{
this.noOfBaseBallPlayers = noOfBaseBallPlayers;
this.array = new Integer[noOfBaseBallPlayers][3];
}

public void assignValues()
{

Random randomNumbers = new Random();

    for (int row = 0; row < noOfBaseBallPlayers; row++ )
     {
         for (int column = 0; column < 3 ; column++ )
         {
             array[row][coloumn] = new Integer(randomNumbers.nextInt())   
         }

     }


}

}
相关问题