, если relations[maxrow][0]=label;
не удается, но relations[0][0]=label;
работает, тогда maxrow
не равно 0. Попробуйте распечатать значение maxrow
и посмотреть, что это такое.
Полагаю, вы обрезалифрагмент кода, который выполняет что-то вроде сброса значения maxrow
, или он случайно устанавливается внутри вашего метода инициализации.
Для записи вам не нужно инициализировать ваши значения равными 0Они уже установлены на 0 по умолчанию.Это понадобится только в том случае, если вы инициализируете их ненулевым значением.
Улучшенный инициализатор для OP:
/**
* Initialize a 2d int array to any single value
* The array does not need to be rectangular.
* Null rows in the 2d array are skipped (code exists to initialize them to empty.)
* @param arr the array to modify to contain all single values
* @param value the value to set to all elements of arr
*/
static void initializeArray(final int[][] arr, final int value) {
for(int i = 0; i < arr.length; i++) {
if(arr[i] == null) continue; // perhaps it wasn't initialized
/* optional error handling
if(arr[i] == null) {
arr[i] = new int[0];
continue;
}
*/
for(int j = 0; j < arr[i].length; j++) arr[i][j] = value;
}
}
Примеры для Oceanblue:
// works, arrays as OP is working with
class Oceanblue {
public static void main(String[] args) {
int[][] arr = new int[30][50];
System.out.println(arr[4][6]); // should be 0
}
}
Результаты этого:
C:\Documents and Settings\glow\My Documents>javac Oceanblue.java
C:\Documents and Settings\glow\My Documents>java Oceanblue
0
Это не работает:
// doesn't work for local variables that aren't arrays
class Oceanblue {
public static void main(String[] args) {
int test;
test++; // bombs
System.out.println(test); // should be 1, but line above bombed
}
}
Результат, как вы упомянули
C:\Documents and Settings\glow\My Documents>javac Oceanblue.java
Oceanblue.java:4: variable test might not have been initialized
test++; // bombs
^
1 error