1

我有一个问题要回答我正在上的一门课(是的,这是一个家庭作业问题 - 一个额外的学分),但我不希望有人简单地给我答案。我更希望有人温柔地指出我应该(或不应该)做什么来解决这个问题。

这门课是我第一次接触Java,所以如果我的代码和理解很糟糕,那就是为什么,所以我提前道歉。

问题:

我需要创建一个 3 行 x 5 列 x 3 组的数组。我的输出类似于:

设置 1:

0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

第 2 组:

15 16 17 18 19

20 21 22 23 24

等等等等

我能够弄清楚的代码(到目前为止)产生了我需要的 3 个集合作为一个整体的范围,0-44,但我不确定如何格式化这些,所以它看起来像上面那样。当我运行代码时,我只有一个从 0 到 44 的长列表。

谁能指出我应该做些什么来将这个列表分成我需要的行/列而不简单地给我答案?我想说这是我自己想出来的,只需要问一个小方向就可以到达那里。

我的代码:

public static void main(String[] args) {

    int list[][][] = new int [3][5][3]; //create rows, column, units (buildings) array structure.
    int i,j,k; //assign variables for row, column and unit (building).
    int ctr = 0; //set counter.

    //create array
    for (i=0; i<3; i++)
    for (j=0; j<5; j++)
    for (k=0; k<3; k++)

        {list[i][j][k] = ctr++;}


    for (i=0; i<3; i++)
    for (j=0; j<5; j++)
    for (k=0; k<3; k++)

    //Format array

        {System.out.println(list[i][j][k] + " ");}
}

编辑:

感谢大家的建议,这里取得了一些进展。我能够以 5 列数据所需的整体方式对其进行格式化。我意识到(通过这个摸索)我对原始“int list [] [] []”的设置是不正确的,这就是为什么我在这种格式上遇到问题的原因是我需要它正确的方式(列和行计数) .

如果我可以问,我会问的下一个问题是如何在需要的地方插入“Set X”文本?我能够弄清楚 Set 1 的位置,但我想(现在)在以 15 开头的行之前显示“Set 2”字样,在以 30 开头的行之前显示“Set 3”字样。

我是否想为每个“Set X”块将是(范围明智)的每个值范围创建单独的循环,然后可能相应地标记它们?

此时我修改后的代码如下(希望格式比以前更好)。同样,不是在寻找任何人给我答案,只是希望获得一些关于寻找什么的方向以解决这个问题。

public class ECThreeD {

    public static void main(String[] args) {

        int list[][][] = new int[3][3][5]; // create rows, column, units
                                            // (buildings) array structure.
        int i, j, k; // assign variables for row, column and unit (building).
        int ctr = 0; // set counter.

        // create array
        for (i = 0; i < 3; i++) {
            for (j = 0; j < 3; j++) {
                for (k = 0; k < 5; k++) {
                    list[i][j][k] = ctr++;
                }
            }
        }
        System.out.println("Set 1");

        for (i = 0; i < 3; i++) {
            for (j = 0; j < 3; j++) {
                for (k = 0; k < 5; k++) {
                    // Format array
                    System.out.print(list[i][j][k] + " ");
                }
                System.out.println();
            }
        }
    }
}
4

4 回答 4

1
  1. 如果您使用有意义的变量(例如行、列、集合)而不是 i、j、k,它将帮助您(和读者)理解您的逻辑。

  2. 你的格式是……有趣!这还不错,这不是人们通常在 Java 中的想法。我能理解你写的东西,但我可以告诉你正在用不同的语言思考。

我将您的代码粘贴到 Eclipse 并进行了自动格式化(Ctrl-Shift-F),结果如下:

    public static void main(String[] args) {

        int list[][][] = new int[3][5][3]; // create rows, column, units
                                            // (buildings) array structure.
        int i, j, k; // assign variables for row, column and unit (building).
        int ctr = 0; // set counter.

        // create array
        for (i = 0; i < 3; i++)
            for (j = 0; j < 5; j++)
                for (k = 0; k < 3; k++)

                {
                    list[i][j][k] = ctr++;
                }

        for (i = 0; i < 3; i++)
            for (j = 0; j < 5; j++)
                for (k = 0; k < 3; k++)

                // Format array

                {
                    System.out.println(list[i][j][k] + " ");
                }
    }

我并不是要挑剔,但这是朝着正确方向迈出的必要一步,在您可以向此代码添加更多复杂性之前。此外,您的教授可能希望采用类似的格式。

  1. 您可能知道, println 添加了换行符,而 print 没有。所以第一步是在最一般的情况下使用 print,而不是 println;并且仅在您实际需要移动到新行时才使用 println 。既然你只是要求一个提示,那我就不说了。祝你好运!
于 2013-10-05T21:59:24.003 回答
1

您需要在中间打印新行,使用System.out.println(). 此外,println()总是在字符串之后打印一个新行(就像按 Enter 键一样)。还有System.out.print(),它后面没有换行。

考虑一下何时需要新线路。在每一行或每一列之后?每组之后可能会额外增加一个以形成空行。

编辑:我已经正确缩进了你的代码。然后查看在哪里添加代码会更容易一些。

int list[][][] = new int [3][5][3]; //create rows, column, units (buildings) array structure.
int i,j,k; //assign variables for row, column and unit (building).
int ctr = 0; //set counter.

//create array
for (i=0; i<3; i++) {
    for (j=0; j<5; j++) {
        for (k=0; k<3; k++) {
            list[i][j][k] = ctr++;
        }
    }
}


for (i=0; i<3; i++) { //Prints 3 sections.
    for (j=0; j<5; j++) { //Prints 5 rows.
        for (k=0; k<3; k++) { //Prints 3 columns.
            //Format array
            System.out.println(list[i][j][k] + " ");
        }
    }
}
于 2013-10-05T21:49:49.140 回答
0

首先,一些缩进:

public static void main(String[] args) {

    int list[][][] = new int [3][5][3]; //create rows, column, units (buildings) array structure.
    int i,j,k; //assign variables for row, column and unit (building).
    int ctr = 0; //set counter.

    //create array
    for (i=0; i<3; i++) {
        for (j=0; j<5; j++) {
            for (k=0; k<3; k++) {
                list[i][j][k] = ctr++;
            }
        }
    }


    for (i=0; i<3; i++) {
        for (j=0; j<5; j++) {
            for (k=0; k<3; k++) {
                //Format array
                System.out.println(list[i][j][k] + " ");
            }
        }
    }
}

请尝试像这样构造您的代码,这样更容易阅读。

考虑在最后一组循环中发生了什么。您想在每一行之后打印一个换行符,因此您可能需要在内部循环之外添加进一步的打印调用......在打印一行之后您需要一个换行符。很简单,只要仔细阅读。

于 2013-10-05T21:52:29.667 回答
0

尝试使用System.out.print(yourString), 并使用 for 循环范围(您必须添加括号),添加虚拟字符串。仅当您完成该行时才使用 println()。

于 2013-10-05T22:03:42.683 回答