永发信息网

帮我看看,怎么越界了?

答案:3  悬赏:20  手机版
解决时间 2021-11-12 14:19
  • 提问者网友:酱爆肉
  • 2021-11-11 20:00
帮我看看,怎么越界了?
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-11-11 20:09
你的程序我帮你改完了,你看看吧.
完整的程序如下:
public class HF
{
public static int[][] HF_ceart(int n)
{
int mat[][]=new int[n][n];
int i=0,j=n/2;
for(int k=1;k<=n*n;k++)
{
mat[i][j]=k;//说这里越界了!但我看不出来!
if(k%n==0)
{
i=(i+1)%n;
}
else
{
if((i-1)<0)i=n-i-1;
else i=(i-1)%n;
j=(j+1)%n;
}
}
return mat;
}
public static void print(int[][] mat)
{
for(int i=0;i {
for(int j=0;j {
System.out.print(String.format("%3d",mat[i][j]));
}
System.out.println();
}
}
public static void main(String args[])
{
print(HF_ceart(5));
}
}
运行结果:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-11-11 21:50
把 i=(i-1)%n;改成i = Math.abs(i - 1) % n;
  • 2楼网友:逃夭
  • 2021-11-11 21:35
你把第一个for循环改成
for(int k=0;k再次运行就不会报越界了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯