1

所以我对Java有点陌生,并决定创建某种滑动数字谜题。这是我所拥有的:

int[] puz = {1,2,3,
             4,5,6,
             7,8,9}
for(int i=0; i<puz.length; i++){
    System.out.println(puz[i]);
}

1 应该是空白点,但我稍后会弄清楚。我的问题是代码打印:

1
2
3
4
5
6
7
8
9

当我想要它打印时:

1 2 3
4 5 6
7 8 9

我也尝试过做一个嵌套循环,因为它太可怕了,我不好意思在这里展示它。我会尝试使用二维数组吗?

4

3 回答 3

1

尝试创建一个变量 counter 并在每次迭代循环时递增它。使用模运算符,将其除以 3,当余数为 0 时,创建一个新行。

int puz = {1,2,3,4,5,6,7,8,9};

int counter = 1;
for(int i=0; i<puz.length; i++){
    System.out.print(puz[i]);
    if (counter % 3 == 0){
        System.out.println("");
    }
    counter++;
}
于 2017-03-02T03:34:31.830 回答
1

我想你可以试试...

int puz = {1,2,3,4,5,6,7,8,9};
int n = Math.ceil(Math.sqrt(puz.length));
for (int i = 0; i < puz.length; i++) {
    System.out.print(puz[i] + ((i + 1) % n == 0 ? "\r\n" : " ");
}
于 2017-03-02T02:47:55.807 回答
0

这里的技巧是使用模运算符。此运算符将一个数字除以另一个,并返回余数。在java(以及据我所知的其他任何地方)中,%是模运算符。如果您希望每三个数字后面有一个换行符,只需使用模除法除以三,如下所示:

int[] puz = {1,2,3,4,5,6,7,8,9};
    //For what it's worth, you don't have this semicolon in your question, so I added it in.
for(int i=0; i<puz.length; i++){
    System.out.print(puz[i] + " ");
    if(i % 3 == 2){//It's equal to 2 because you start at 0 and not 1.
        System.out.println("");
    }
}

此代码在执行时会打印以下内容,这就是您想要的:

1 2 3 
4 5 6 
7 8 9 
于 2017-03-02T02:26:09.817 回答