2015-04-17 41 views
1

這個想法是做一個二維數組,我可以把x和o的,可以由用戶輸入。 以下代碼是我擁有的。爲什麼我的2d數組顯示'x'爲120?

 if(xo.nextInt()== 1){ 
    System.out.println("You have chosen x"); 

    for(i =0; i < 6; i++){ 
     for(j = 0; i < 6; i++){ 
      System.out.println("Please choose a cell to enter"); 
      System.out.println(disBoard[i][j] = 'x'); 

我知道在這一點上我沒有任何要求輸入數組的用戶輸入。我想知道的是爲什麼它顯示120而不是x?

這就是數組是如何宣稱:

int[][] disBoard; 
+0

120是ASCII字符'x'的數字表示形式。 –

+0

我知道你找到了答案,但我很好奇爲什麼你的第二個forloop使用/遞增我?它假設爲(j = 0; j <6; j ++)? –

+0

你不能把一個字母放在'int'的數組中。你可以設置'disBoard [i] [j] ='x'',它簡單地將'x'字符的'int'值賦值給你的數組。 –

回答

3

由於陣列類型爲int,這意味着當您將'x'存儲到該陣列時,需要將其轉換爲整數。由於方式字符在Java中表示(作爲字符編碼的結果),x等於由的120

可以恢復的字符值的數值鑄造

char characterVal = (char)(disBoard[i][j]); 

或者,您可以將陣列更改爲char[][],這將允許您存儲字符。

+0

謝謝我剛剛意識到它的價值120 :)我從來不知道如何恢復字符值,雖然感謝您的幫助:) – user3620639

+0

@ user3620639沒問題,樂意幫忙! – hexafraction

3

也許你已經聲明int[][] disBoard和120的'x'int值。只需將聲明更改爲char[][] disBoard即可。

+0

「可能」?他說他是這樣宣佈的。 – hexafraction

+0

@hexafraction我沒有看到OP中陳述'int [] [] disBoard'的帖子中的任何部分。你做? –

+1

最後一句,「數組類型爲int」 – hexafraction

0

我只是查了一下ascii表,並認識到它的x的ascii代碼。

+2

'char'不是ASCII碼,而是UTF-16。 –

相關問題