JAVA循环语句输出矩阵问题(在线等)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA循环语句输出矩阵问题(在线等)相关的知识,希望对你有一定的参考价值。
求大神帮我用循环语句输出两个矩阵
1、1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
2、
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
最好有代码
public void matrix1(int n)
int a=n*2-1;
int[][] m=new int[a][a];
for(int i=1;i<=n;i++)
for(int j=i-1;j<=a-i;j++)
for(int k=i-1;k<=a-i;k++)
m[j][k]=i;
show(m);
public void matrix2(int n)
int nn=n*n;
int[][] m=new int[n][n];
int[] coo=new int[]0,0,1;
while(nn>0)
m[coo[0]][coo[1]]=nn;
if(nn==1)break;
next(m,coo,n);
//System.out.println(""+coo[0]+" "+coo[1]);
nn--;
show(m);
private void next(int[][] m,int[] c,int n)
switch(c[2])
case 1:c[1]++;
if(c[1]==n||m[c[0]][c[1]]!=0)
c[1]--;
c[2]=2;
next(m,c,n);
break;
case 2:c[0]++;
if(c[0]==n||m[c[0]][c[1]]!=0)
c[0]--;
c[2]=3;
next(m,c,n);
break;
case 3:c[1]--;
if(c[1]<0||m[c[0]][c[1]]!=0)
c[1]++;
c[2]=4;
next(m,c,n);
break;
case 4:c[0]--;
if(c[0]<0||m[c[0]][c[1]]!=0)
c[0]++;
c[2]=1;
next(m,c,n);
break;
private void show(int[][] m)
for(int i=0;i<m.length;i++)
for(int j=0;j<m[i].length;j++)
System.out.print(""+m[i][j]+"\\t");
System.out.println();
public static void main(String[] args)
TwoMatrix m=new TwoMatrix();
m.matrix1(4);
m.matrix2(5);
参考技术B 如果只这么要求的话 给你一个思路 用二维数组
public static void main(String[] args)
int[][] a=1,1,1,1,1,1,2,2,2,1,1,2,3,2,1,1,2,2,2,1,1,1,1,1,1;
for(int i=0;i<a.length;i++)
for(int j=0;j<a[i].length;j++)
System.out.print(a[i][j]+" ");
System.out.println();
第二题只是把数组成员换一下
如果要考虑依次输出的话 另说
不过思路也差不多 把换行输出 跳跃填充到数组里
然后输出数组就可以了本回答被提问者和网友采纳 参考技术C
按照你的要求编写的Java程序如下:
public class AApublic static void main(String[] args)
final int N=5;
int a[][]=new int[N][N];
int number=(N-1)/2;
for(int k=0;k<=(N-1)/2;k++)
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
if(i==(N-1)/2-k || j==(N-1)/2-k || i==N/2+k || j==N/2+k)
a[i][j]=number+1;
number--;
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
System.out.print(a[i][j]+" ");
System.out.println();
System.out.println();
System.out.println();
int b[][]=new int[N][N];
int num=N*N;
int i=0,j=0,m=0;
if(N%2==0)
m=N/2;
else
m=N/2+1;
for(i=0;i<=m-1;i++)
for(j=i;j<=N-i-1;j++)
b[i][j]=num;
num--;
for(j=i+1;j<=N-i-1;j++)
b[j][N-i-1]=num;
num--;
for(j=N-i-2;j>=i;j--)
b[N-i-1][j]=num;
num--;
for(j=N-i-2;j>=i+1;j--)
b[j][i]=num;
num--;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
System.out.print(String.format("%2d",b[i][j])+" ");
System.out.println();
运行结果:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
for(int i=0;i<str.length;i++)
System.out.println();
for(int ii=0;ii<str[0].length;ii++)
if((i>=1&&i<=3)&&(ii>=1&&ii<=3))
str[i][ii]=2;
System.out.print(str[i][ii]);
else
str[i][ii]=1;
System.out.print(str[i][ii]);
第二题·我写的话太多if了·感觉不好·等高手回答吧。。 第5个回答 2013-07-10 用二维数组比较难理解,祢要是可以理解当然不错,理解不了就用二重循环吧
JAVA SE基础篇14.循环嵌套
在循环语句中,再嵌套一个或多个循环,称位循环嵌套
用几个由浅入深的例子来了解循环嵌套:
1.输出一个3*3的矩阵
for(int i = 0;i<3;i++){
for(int j = 0;j<3;j++){
System.out.print(" * ");
}
System.out.println();
}
输出结果:
* * *
* * *
* * *
2.输出一个99乘法表
for(int i=0;i<10;i++){//i是第一个数
for(int j=0;j<i+1;j++){//j是第二个数
System.out.print(" "+j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
输出结果:
0*0=0
0*1=0 1*1=1
0*2=0 1*2=2 2*2=4
0*3=0 1*3=3 2*3=6 3*3=9
0*4=0 1*4=4 2*4=8 3*4=12 4*4=16
0*5=0 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
0*6=0 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
0*7=0 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
0*8=0 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
0*9=0 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
3.求出1-100之间基数之和和偶数之和
int jishusum=0;
int oushusum=0;
for(int i=0;i<101;i++){
if(i%2==0){
oushusum+=i;
}else{
jishusum+=i;
}
}
System.out.println("偶数和:"+oushusum);
System.out.println("基数和:"+jishusum);
输出结果:
偶数和:2550
基数和:2500
4.百钱百鸡
公鸡5块1个,母鸡3块1个,小鸡3个一块,100块全买鸡,不许剩钱,三种必须都买,怎么搭配?
for(int a=1;a<20;a++){
for(int b=1;b<34;b++){
int c=100-a-b;
if ((c % 3 == 0) && (a * 5 + b * 3 + c / 3 == 100)){
System.out.println("公鸡:"+a+"母鸡:"+b+"小鸡:"+c);
}
}
}
输出结果:
公鸡:4母鸡:18小鸡:78
公鸡:8母鸡:11小鸡:81
公鸡:12母鸡:4小鸡:84
以上是关于JAVA循环语句输出矩阵问题(在线等)的主要内容,如果未能解决你的问题,请参考以下文章