Это не является незаконным, потому что в Java (и других языках) символ в этом случае будет приведен к int.Например, (int)'%'
Примерно так будет безопаснее, если вы не знаете, каким будет значение типа char.
int[][] myArray = new int[Character.MAX_VALUE][Character.MAX_VALUE];
myArray['%']['^'] = 24;
Это будет работать, поскольку Java переведет его в:
myArray[37][94] = 24;
Убедитесь, что вы поместили максимальное значение символа (как уже сделано), что в основном равно "?"что означает 65535. Или вы получите ArrayOutOfBoundsException .
Если вы знаете свой диапазон, вы все равно можете использовать 256. Просто убедитесь, что вы правильно проверяете границы, где ввод>> 0 и <256. </p>
public int getItem(int x, int y) {
if ((x < 0 && x > 255) || (y < 0 && y > 255)) {
return -1; // Or you can throw an exception such as InvalidParameterException
}
return myArray[x, y];
}
Воспроизводится проверка границ ошибокважная роль для этого.
Я бы переосмыслил то, что вы пытаетесь сделать, что-то вроде этого нечитаемо, чего вы пытаетесь достичь?Возможно, вы можете использовать другие коллекции ?
РЕДАКТИРОВАТЬ
Изменены типы, так как вы изменили код.