我似乎无法专门解决此问题。我找了它。 作业是实施棒球运动员球衣号码,击球次数和步行次数的应用。必须使用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(" ");
}
}
}
答案 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())
}
}
}
}