中易网

帮我看看,怎么越界了?

答案:3  悬赏:30  
解决时间 2021-11-08 18:16
  • 提问者网友:我喜歡係
  • 2021-11-08 02:34
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 {
mat[i][j]=k;//说这里越界了!但我看不出来!
if(k%n==0)
{
i=(i+1)%n;
}
else
{
i=(i-1)%n;
j=(j+1)%n;
}
}
return mat;

}
public static void print(int[][] mat)
{
for(int i=1;i {
for(int j=1;j {
System.out.print(" "+mat[i][j]);
}
System.out.println();
}

}
public static void main(String args[])
{
print(HF_ceart(5));
}
}

这是建立幻方,!
最佳答案
  • 二级知识专家网友:野心和家
  • 2021-11-08 03:12
你的程序我帮你改完了,你看看吧.
完整的程序如下:
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-08 04:24
声明数组时候new int[9],这样数组长度只有9,你只能输入9个数字,另外 你那个 输出的数字顺序+points[9],没看懂什么意思,这样输出的是第十个输入的数字。你把 int points[]=new int[9]; 改成 int points[]=new int[10];就不会报错了
  • 2楼网友:丢不掉的轻狂
  • 2021-11-08 04:07
你把第一个for循环改成 for(int k=0;k
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息