#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
?