带有2d数组的Java练习显示表
我正在努力完成一个java练习,它涉及使用2d数组根据命令行参数动态创建和显示一个表
例如:
java表5
+-+-+-+-+-+
|1|2|3|4|5|
+-+-+-+-+-+
|2|3|4|5|1|
+-+-+-+-+-+
|3|4|5|1|2|
+-+-+-+-+-+
|4|5|1|2|3|
+-+-+-+-+-+
|5|1|2|3|4|
+-+-+-+-+-+
到目前为止我所做的:
public static void main(String[] args) {
int num = Integer.parseInt(args[0]);
String[][] table = new String[num*2+1][num];
int[] numbers = new int[num];
int temp = 0;
for(int i=0; i<numbers.length; i++)
numbers[i] = i+1;
// wrong
for(int i=0; i<table.length; i++){
for(int j=0; j<num;j++){
if(i%2!=0){
temp=numbers[0];
for(int k=1; k<numbers.length; k++){
numbers[k-1]=numbers[k];
}
numbers[numbers.length-1]=temp;
for(int l=0; l<numbers.length; l++){
table[i][j] = "|"+numbers[l];
}
}
else
table[i][j] = "+-";
}
}
for(int i=0; i<table.length; i++){
for(int j=0; j<num; j++)
System.out.print(table[i][j]);
if(i%2==0)
System.out.print("+");
else
System.out.print("|");
System.out.println();}
}
这不起作用,因为它每行打印1 | 2 | 3 | 4,这不是我需要的。我发现了这个问题,这是因为第一个for循环更改数组顺序的次数超过了需要的次数,并且基本上它返回的是最初的状态
我知道可能有一种方法可以通过编写更多的代码来实现这一点,但我总是倾向于在编写代码时尽可能多地嵌套以“优化”代码,这就是为什么我尝试通过使用尽可能少的变量和循环来解决这一问题
# 1 楼答案
您已经使它变得更复杂,请尝试以下简单代码:
}
# 2 楼答案
你太复杂了。很难找到你的错误。直接代码如下:
# 3 楼答案
以下代码将初始化数据的2d int数组(示例中为1-5)。然后打印表格。请注意,表结构未保存在字符串2d数组中。把表格打印出来就行了。请参见第行中的注释
输出:
如果将num=9作为参数。上述代码将打印:
# 4 楼答案
以上只是按指定顺序打印数字的逻辑。 另一个设计模式(+-+)我想你可以处理