-3
我不斷收到第21行的錯誤ArrayIndexOutOfBounds:4。該行是Spiral [VIndx] [HIndx] = number。該程序應該在給定某個維度時創建一個數字螺旋。例如,如果給定維度3,則爲一個3x3 2d數組,螺旋數字。這裏的螺旋應該是什麼:ArrayIndexOutOfBounds。 Java螺旋程序
爲什麼不是我的工作循環?
import java.util.*;import java.io.*;
public class Spiral{
public static void Spiral(int dimensions, int [][] Spiral)
{
int endNumber = (int)Math.pow(dimensions, 2);
int number = 1;
int rightmovement = 1;
int downmovement = 1;
int leftmovement = 2;
int upmovement = 2;
int HIndx = (dimensions-1)/2;
int VIndx = (dimensions-1)/2;
while(number<=endNumber)
{
for(int i = 0;i<=rightmovement;i++)
{
Spiral[VIndx][HIndx]=number;
number++;
HIndx++;
if(number==endNumber)break;
}
rightmovement++;
for(int i = 0;i<=downmovement;i++)
{
Spiral[VIndx][HIndx]=number;
number++;
VIndx++;
if(number==endNumber)break;
}
downmovement++;
for(int i = 1;i<=leftmovement;i++)
{
Spiral[VIndx][HIndx]=number;
number++;
HIndx--;
if(number==endNumber)break;
}
leftmovement++;
for(int i = 1;i<=upmovement;i++)
{
Spiral[VIndx][HIndx]=number;
number++;
VIndx--;
if(number==endNumber)break;
}
upmovement++;
}
}
public static void main(String[]args)throws IOException
{
File file = new File("spiral.txt");
Scanner input = new Scanner(file);
String [] numbers = new String [2];
int i =0;
while (input.hasNextLine())
{
String line = input.nextLine();
numbers[i]=line;
i++;
}
int dimensions = 0;
input.close();
int [][] Spiral = new int [dimensions][dimensions];
dimensions = Integer.parseInt(numbers[0]);
int range = Integer.parseInt(numbers[1]);
if(dimensions%2==0)
{
dimensions+=1;
}
Spiral(dimensions, Spiral);
for(i = 0; i<dimensions;i++){
for(int j = 0; j<dimensions;j++){
System.out.println(Spiral[i][j]);
}
}
}
}
你命名的慣例不斷讓我困惑! – Smit 2013-04-04 21:43:57
您是否嘗試過使用調試器? – Vitaly 2013-04-04 21:45:18