字符串连接未按预期工作

时间:2011-05-29 21:08:10

标签: java algorithm

我有以下代码:

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 个答案:

答案 0 :(得分:12)

那是因为你要在变量中添加' ',因为' '是一个带有asci代码32的字符,它会在你的数组中添加32到0的值并打印32.你必须写两个打印件根据需要编制输出结果。

答案 1 :(得分:10)

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

' '是空格的字符,其ascii值为32。单引号表示char值不是String

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

将连接一个空格。

答案 2 :(得分:6)

您正在添加0 + 32,因为''是空格而且是32 ASCII,而不是进行字符串连接。改为

System.out.print(this.tabuleiro[i][0]+" ");

答案 3 :(得分:1)

在输出行中,您使用的是+ ' '。这会在tabuleiro的每个条目中添加字符''(字符值32)。您需要使用+ " "

答案 4 :(得分:1)

也不要这样做:

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;
    }

并且惊讶于第二个循环没有被执行三次。