永发信息网

java编程九宫格问题

答案:1  悬赏:20  手机版
解决时间 2021-04-29 01:41

编译通过,运行时总报益处,找出这个程序哪有问题?

import java.util.Scanner;
public class JiuGong{
public static void main(String[]args){
Scanner s = new Scanner(System.in);
int x = s.nextInt();
int h = 0;
int l = x/2;
int[][] a = new int[x][x];
for(int i=1;i<=x*x;i++){
a[h][l] = i; //运行提示溢出
if(h==0&&l==x-1){h++;}
else if(h==0){h=x-1;l++;}
else if(l==x-1){h--;l=0;}
else if(a[--h][++l]!=0){h+=2;l--;}
else {h--;l++;}

}

for(int j=0;j<x;j++){
for(int k=0;k<x;k++){
System.out.print(a[h][l]+" ");
}
System.out.println();
}
}
}

最佳答案

要求:根据输入的数字n,如:3,5,7...以矩阵显示n行n列数,这些数由1~n*n构成,要求矩阵的每行每列及对角线上n个数之和相等
预备知识:
在距阵中,1在第一行正中,随后的数字应放到上一个数字的右上方方格中,如果向上不行,就放到该列的最下方格子;如果向右不行,就放到该行的最左边;如果都不行,就放到上一个数字的正下方;如果目标格子中已经有数字,也放到上一个数字的正下方


思路:
1) 使用2维数组预备存储1~n*n这些数字
2) 1是放到第一行正中的,所以其索引号是:[0][(n-1)/2]
3) 随后的数字,其索引号原则如下
1> num的行索引为 num-1 的 (行索引-1) , num的列索引为 num-1 的 (列索引+1)
2>如果发现num的行,列索引都越位(-1或n),则
num的行索引为 num-1 的 (行索引+1) , num的列索引为 num-1 的 (列索引)
3>如果发现num的行,列索引指向的位置已经有数字,则
num的行索引为 num-1 的 (行索引+1) , num的列索引为 num-1 的 (列索引)
4>如果发现num的行越位(-1),则
num的行索引为n-1
5>如果发现num的列越位(n),则
num的列索引为0



import java.util.Scanner;


public class JiuGong
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int x = s.nextInt(); //输入长度
int h = 0; //行
//在距阵中,1在第一行正中
int l = x / 2; //列
int[][] a = new int[x][x];
for (int i = 1; i <= x * x; i++)
{
a[h][l] = i; //运行提示溢出
//随后的数字应放到上一个数字的右上方方格中
h--;
l++;
//3.如果都不行,就放到上一个数字的正下方
if (h < 0 && l >= x)
{
//先返回上一个数字
h++;
l--;
//再下移一行
h++;
}
//1.如果向上不行,就放到该列的最下方格子
else if (h < 0)
{
h = x - 1;
}
//2.如果向右不行,就放到该行的最左边
else if (l >= x)
{
l = 0;
}
//4.如果目标格子中已经有数字,也放到上一个数字的正下方
else if (a[h][l] > 0)
{
//先返回上一个数字
h++;
l--;
//再下移一行
h++;
}
}


//打印九宫格
for (int j = 0; j < x; j++)
{
for (int k = 0; k < x; k++)
{
System.out.print(a[j][k] + " ");
}
//换行
System.out.println();
}
}
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
邯郸地区热与世界末日有关吗
有什么可以有效的美白去痘的方法呢,
金马商混有限责任公司在哪里啊,我有事要去这
日文美好的句子,日文的唯美句子,尽量多点吧
关于问问管理员的问题
父母总是偷看我的手机短信怎么办
现在哪家麦当劳还有紫色和黄色的杯子啊?
本色v9固件升级
广发临时额度我上几个月都有,怎么这个月没有
为什么我的熊熊在社区里发不到言?
请好友们推荐几个能减肥的自制水果汁
爱女朋友的古风句子,十条古风句子分手必备
欣驰汽车维修服务中心这个地址在什么地方,我
合肥二十六中多少分进?学校情况怎么样?
无法复制 找不到指定文件 带图来,
推荐资讯
长得帅真可怕
从广州番禹去深圳布吉有什么车去
我想和老公起个外号 有意思的
皮肤干噪怎么样搭配保养品?
她很在乎很喜欢我吗
QQ旋舞等级奖励?
一切都会过去的句子,各位帮个忙,有没有描写
夏天额头光出汗,怎么办?
谷歌G1,G2,摩托里程杯,诺基亚E72,哪个性
病句修改:一个人难免有缺点错误,改进了就好
现在柳州哪里还招工啊
什么是海市蜃楼?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?