这是一个求回旋数字的程序 但是发生了错误了 求高手调试修改

天步壹丢丢 2012-02-28 03:42:07
import java.io.*;
public class huixuan {
public static void main(String[] args)throws IOException {
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
String str=buf.readLine();
int num=Integer.parseInt(str);
System.out.print(num);
int col=-1,row=0,i=1;
int a[][]=new int[num][num];
for(;i<num*num;)
{
while(a[row][col+1]==0&&col<num)
{
a[row][col++]=i++;

}
while(a[row+1][col-1]==0&&row<num)
{
a[++row][col-1]=i++;
}
while(a[row-1][col-2]==0&&col>-1)
{
a[row-1][--col]=i++;
}
while(a[row-1][col+1]==0&&row>0)
{
a[row--][col]=i++;
}
break;
}
for(int x=0;i<5;i++)
{
for(int j=0;j<5;j++)
System.out.print(a[x][j] );
System.out.println("\n");
}
}

}
...全文
78 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yugaochao 2012-02-28
  • 打赏
  • 举报
回复
越界严重。写点注释,不明白要做什么。
gukuitian 2012-02-28
  • 打赏
  • 举报
回复
参考下,思路就是左,下,上,右的顺序设置下一个数

public static void main(String[]args)
{
int[][] array = new int[3][3];
array[0][0] = 1;
placeNext(0, 0, array);
for (int s = 0; s<3; s++)
{
System.out.println(Arrays.toString(array[s]));
}
}
public static void placeNext(int i, int j, int[][] a)
{
if (j<a.length-1&&a[i][j+1]==0)
{
a[i][j+1] = a[i][j]+1;
placeNext(i, j+1, a);
}
else if (i<a.length-1&&a[i+1][j]==0)
{
a[i+1][j] = a[i][j]+1;
placeNext(i+1, j, a);
}
else if (j>0&&a[i][j-1]==0)
{
a[i][j-1] = a[i][j]+1;
placeNext(i, j-1, a);
}
else if (i>=0&&a[i-1][j]==0)
{
a[i-1][j] = a[i][j]+1;
placeNext(i-1, j, a);
}
}
这个用户很懒 2012-02-28
  • 打赏
  • 举报
回复
请加注释
gukuitian 2012-02-28
  • 打赏
  • 举报
回复
各种越界啊,你先自己调调,
比如这个判断 while(a[row][col+1]==0&&col<num)
明显要先判断col<num-1,不然加1不就越界了吗

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧