Несоответствие типа: не удается преобразовать из int в int[]

#java #arrays #eclipse #random

#java #массивы #eclipse #Случайный

Вопрос:

Вопрос, который я, похоже, не могу решить специально для этой строки. Я искал это. Задача состоит в том, чтобы реализовать в приложении номер футболки бейсболиста, среднее количество отбивающих и количество ходов. Необходимо использовать двумерный массив из 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(" ");
     }

}
}
  

Комментарии:

1. Для чего предназначена counter переменная? Потому что прямо сейчас это просто сидит там и злит ваш компилятор.

Ответ №1:

Вам необходимо получить доступ к обоим индексам.

 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 каждый раз, когда вводите внутренний цикл при его объявлении.

Возможно, вы захотите использовать counter, но поместите его вне внутреннего цикла.

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

Ответ №2:

Я думаю, вам нужно указать все измерения, прежде чем присваивать какое-либо значение переменной массива. Например, array[0][1] вместо only array[0]

Ответ №3:

потому что вы используете 2d-массив

массив [0] — это массив из 3 элементов, поэтому, если вы попытаетесь выполнить array [0] = 0, это приведет к ошибке, и это то, что пытается сделать ваша строка. Потому что array[0] содержит массив.

вам нужно сделать

 array[counter][0] = shortNumber;
array[counter][1] = battingAverage;
array[counter][0] = numWalks;
  

очевидно, что эти значения могут быть случайными и т.д.

Ответ №4:

@Carlos Извините за ошибку … я случайно использовал синтаксис c #, я использовал класс Integer просто для того, чтобы показать, почему иногда необходимо ключевое слово new…

 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())   
         }

     }


}

}
  

Комментарии:

1. Что? array[row,column] ? Это недопустимый Java! И зачем использовать класс-оболочку Integer вместо int ?