可能性の重複:
Looping in a spiralJavaの作成
私は3×3の行列を移入するためのプログラムを作成しています。私はこのようなものになりたいと思っています。
5 4 3
6 1 2
7 8 9
おそらく気付いていたように、螺旋状です。 ここで私が使用しているアルゴリズムはこれです:値が数値の座標を表す2次元配列を持っています。最初に、この配列内のすべての数値座標の値が10になるように割り当てます。次に9から始めて、x座標を小さくし、座標の値をcurrentnum-1に代入します。それから私はYの価値を上げる以外は同じことをします。次に、xの値を減らします。次にYの;
私はすべての番号に10を割り当てる理由は、それが私のプログラムの道として機能するようです。現在のnumは9を超えることはないため、正方形の値が10の場合は緑色の光のようになります。それが10の意味でない場合、値がその四角に割り当てられていれば、その値から切り離されます。ここで
が私のコードですが、私は、Javaに新たなんだのでpublic class spiral {
/**
* @param args
*/
public static void main(String[] args) {
int spiral [] [] = new int[3][3];
for(int i = 0; i <= 2; i++){
for(int j = 0; j <= 2; j++){
spiral[i][j] = 10;
}
}
//0 is x value, 1 is y value
spiral[0][0] = 9;
int x = 1;
int y = 1;
int counter = 1;
int currentnum = 9;
int gridsquare = 3;
for(int i = 0; i <= 8; i++){
if(counter == 5){
counter = 1;
}
if(counter == 1){
System.out.println(x + " " + y);
for(int j = 0;j <= 1;j++){
if(spiral[x][y] == 10){
spiral[x][y] = currentnum;
currentnum--;
x += 1;
}
else{
y += 1;
break;
}
}
}
if(counter == 2){
for(int k = 0; k <= 0; k++){
System.out.print(x + " " + y);
if(spiral[x][y] == 10){
spiral[x][y] = currentnum;
currentnum--;
y += 1;
}
else{
x -= 1;
break;
}
}
}
if(counter == 3){
for(int z = 0; z <= 0; z++){
if(spiral[x][y] == 10){
spiral[x][y] = currentnum;
currentnum--;
x -= 1;
}
else{
y -= 1;
break;
}
}
}
if(counter == 4){
for(int b = 0; b <= 0; b++){
if(spiral[x][y] == 10){
spiral[x][y] = currentnum;
currentnum--;
y -= 1;
}
else{
x += 1;
break;
}
}
}
counter++;
}
System.out.print(currentnum);
}
}
が、私は誰かがかのう修正を提案してくださいます。このエラー
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at spiral.main(spiral.java:44)
を取得していますそれはJavaで書かれている注意してくださいこのため。私のアルゴリズムに問題がある場合は、私に知らせてください。
デバッガを使用して問題を追い詰めるようにしてください。この種の質問は本当に難しいです。 – Beginner
私はそれを狩ることができませんでした。私はデバッガに堪能ではないので – Tom