我有一个问题,我正在尝试为我正在上课(这是一个家庭作业问题 - 一个额外的学分),但我不想让别人给我答案。我更希望有人轻轻地指出我应该(或不应该)做的事情来解决这个问题。
这堂课是我第一次接触Java,所以如果我的代码和理解很糟糕,那么我会提前道歉。
问题:
我需要创建一个3行乘5列乘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”字样。 / p>
我是否想为每个“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();
}
}
}
}
答案 0 :(得分: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] + " ");
}
}
}
答案 1 :(得分:1)
如果您使用有意义的变量(例如行,列,集)来帮助您(和读者)理解您的逻辑,
您的格式是有趣的!它并不坏,这不是人们通常在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] + " ");
}
}
我不是想挑选,但这是朝着正确方向迈出的必要步骤,然后才能为此代码添加更多复杂性。此外,您的教授可能希望采用类似的格式。
答案 2 :(得分: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] + " ");
}
}
}
}
请尝试像这样构建代码,它更容易阅读。
考虑最后一组循环中发生的事情。您希望在每一行之后打印换行符,因此您可能需要在内部循环之外添加更多打印调用...打印行后需要换行符。这很简单,只需仔细阅读即可。
答案 3 :(得分:0)
尝试使用System.out.print(yourString)
,并使用for循环范围(必须添加括号),添加虚拟字符串。
仅在完成行时才使用println()。