2015-08-05 2 views
0

Я пытаюсь создать массив 2d из строки. Но я получаю некоторые странные результаты, когда я пытаюсь установить значение элементов в массиве. Здесь String s = 120453678;создание массива 2d из строки

public int[][] create2D(String s){ 
    int[][] puzzle = new int[3][3]; 
    int a; 

    for(int i = 0; i < 3; i++){ 
     for(int j = 0; j < 3; j++){ 

      puzzle[i][j] = (int)s.charAt(i*3+j); 
      System.out.println(s.charAt(i*3+j));     
      System.out.println(i +" "+ j+" "+ puzzle[i][j]); 
     } 
    } 

    return puzzle;  

} 

Выход, который я получаю. Не знаю, почему его 49, 50, 51 и т. Д.

1 
0 0 49 
2 
0 1 50 
3 
0 2 51 
4 
1 0 52 
5 
1 1 53 
0 
1 2 48 
6 
2 0 54 
7 
2 1 55 
8 
2 2 56 
+0

персонаж, как '3' представлен как "целое" значение 51. кода ASCII Google, и так далее. – laune

+0

Использовать Integer.valueof (String) – CoderNeji

+0

Лучше: используйте символ [3] [3]. – laune

ответ

2

Вы преобразовываете символ в его представление int. Вот почему вы получаете этот результат.

puzzle[i][j] = (int)s.charAt(i*3+j);

ASCII таблица может упоминаться ниже. Вы можете видеть, что 49 является значением ASCII символа '1'.

http://www.asciitable.com/

Чтобы исправить код, вы можете использовать

puzzle[i][j] = Character.getNumericValue(s.charAt(i*3+j));

Смежные вопросы