Java の演習を完了するのに苦労しています。2 次元配列を使用して、コマンド ライン パラメータに基づいてテーブルを動的に作成および表示する必要があります。
例:
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 ループが配列の順序を必要以上に変更し、基本的に最初の状態に戻るためです。
もっと多くのコードを書くことでこれを達成する方法があることはわかっていますが、私はコードを書いている間にコードを「最適化」するために常に可能な限り入れ子にする傾向があるので、変数とループを少なくしてこの課題を解決しようとしました。できるだけ。