Конкатенация строк не работает должным образом - PullRequest
4 голосов
/ 30 мая 2011

У меня есть следующий код:

public boolean prontoParaJogar() throws RemoteException {
    int i;
    int j;
    if (this.jogadores==2) {
        this.jogando=1;
        for (i=0;i<3;i++)
            for(j=0;j<3;j++) {
                this.tabuleiro[i][j]=0;
            }

        for (i=0;i<3;i++) {
            System.out.println("Linha "+i+": ");
            System.out.print(this.tabuleiro[i][0]+' ');
            System.out.print(this.tabuleiro[i][1]+' ');
            System.out.print(this.tabuleiro[i][2]);
            System.out.println("");
        }


        return true;
    } else {
        return false;
    }
}

печатает следующий выход:

Linha 0:
32320
Linha 1: 
32320
Linha 2: 
32320
Linha 0: 
32320
Linha 1: 
32320
Linha 2: 
32320

Это не то, что я ожидал. Должен быть следующий вывод:

Linha 0:
0 0 0
Linha 1:
0 0 0
Linha 2:
0 0 0

Я не могу понять, почему он работает не так, как ожидалось.

Ответы [ 5 ]

12 голосов
/ 30 мая 2011

это потому, что вы добавляете ' ' к своим переменным, так как ' ' - это символ с кодом 32 аси, он добавляет 32 к нулевому значению в вашем массиве и печатает 32. вам нужно написать два отпечатка, чтобы получить выводты отформатирован как хочешь.

10 голосов
/ 30 мая 2011
this.tabuleiro[i][0]+' '

' ' - это символ для пробела, который имеет значение ascii 32. Одинарные кавычки обозначают значение char, а не String

this.tabuleiro[i][0]+" "

объединит пробел.

6 голосов
/ 30 мая 2011

Вы добавляете 0 + 32, потому что '' это пробел, а это 32 ASCII, вместо того, чтобы делать конкатенацию строк. Изменить на

System.out.print(this.tabuleiro[i][0]+" ");
1 голос
/ 30 мая 2011

Также не делайте этого:

for (i=0;i<3;i++)
    for(j=0;j<3;j++) {
        this.tabuleiro[i][j]=0;
    }

а вот так:

for (i=0;i<3;i++) {
    for(j=0;j<3;j++) {
        this.tabuleiro[i][j]=0;
    }
}

или в будущем вы можете сделать это:

for (i=0;i<3;i++)
    System.out.println("i=" + i);
    for(j=0;j<3;j++) {
        this.tabuleiro[i][j]=0;
    }

и удивитесь, что второй цикл не выполняется три раза.

1 голос
/ 30 мая 2011

В ваших выходных строках вы используете + ' '. Это добавляет символ '' (значение символа 32) к каждой записи в tabuleiro. Вам нужно использовать + " ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...