重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
按照你的要求打印矩阵的Java程序如下
我们提供的服务有:成都做网站、网站建设、微信公众号开发、网站优化、网站认证、商州ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的商州网站制作公司
public class A {
public static void main(String[] args) {
int N=3;
int n,i,j;
for(i=1;i=N;i++){
n=1;
for(j=1;ji;j++){
System.out.print(n+++" ");
}
for(j=i;j=2*N-1-i;j++){
System.out.print(n+" ");
}
for(j=2*N-1-i+1;j=2*N-1;j++){
System.out.print(n--+" ");
}
System.out.println();
}
for(i=N-1;i=1;i--){
n=1;
for(j=i-1;j=1;j--){
System.out.print(n+++" ");
}
for(j=2*N-1-i;j=i;j--){
System.out.print(n+" ");
}
for(j=2*N-1;j=2*N-1-i+1;j--){
System.out.print(n--+" ");
}
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
1. 在控制台输入变量
通过while语句来控制,可多次输入,如果为0或者不为整型就退出程序
2. 通过公式2 * in + 1来计算整个图形列和行;
3. 进入第一层for循环行,在此可计算出:
最大正菱形以外的此行的左边或者右边1的个数left=Math.abs((col - (2 * i - 1)) / 2)。
每行最中间的那个值middle = (col - 2 * left) / 2 + 1;
定义1个变量num来控制递增和递减
4. 进入第二层for循环列
先判断如果在菱形之外直接输出1.
如果在菱形之内,输出num,根据middle来判断num是递增还是递减,依次打输出来。
importjava.util.Scanner;
publicclassMiniDmo {
publicstaticvoid main(String[] args) {
int in = 1; //定义输入的变量
while (in != 0) {//如果输入变量为0的话就退出程序
System.out.println("请输入任意整形数字继续,0退出");
try {
in = new Scanner(System.in).nextInt() ; // 输入参数
} catch (Exception e) {
continue;
}
int col = 2 * in + 1; //根据输入变量计算列的长度
for (int i = 1; i = col; i++) {
int left = Math.abs((col - (2 * i - 1)) / 2); //根据列数和当前行计算出每行左边或者右边的1的个数(2*i-1)为每行两边的1 的个数总和
intnum = 1; //定义num的目的是为了添加中间有顺序的列。
int middle = (col - 2 * left) / 2 + 1; //定义每行的中心点
for (int j = 1; j = col; j++) {
if (j = left || j col - left) { //判断如果当前列正处在左边或者右边
System.out.print(1);
} else {
System.out.print(num); //如果不在两边,
if (num middle) { //如果在临界点左边,就让num递增
num++;
}
if (num == middle) { //如果正好在临界点上,把临界点改小,以便于执行下面IF判断
middle = -1;
} elseif (num middle) { //如果过了临界点后,让num递减
num--;
}
}
}
System.out.println(); //换行!
}
}
}
}
class matric{
public static void main(String args[]){
System.out.print("16 15 14 13\n5 4 3 12\n6 1 2 11\n7 8 9 10\n");
}
}
for (int i = 0; i n; i++) {
for (int j = 0; j n; j++) {
System.out.print("*");
}
System.out.println();
}
import java.util.Scanner;
public class A
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int m = in.nextInt();
for (int i = 0; i m; i++)
{
int j;
for (j = 0; j i; j++)
System.out.print(j);
for (int k = 0; k m - i; k++)
System.out.print(j);
System.out.println();
}
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Junzheng {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int i = in.nextInt();
int[][] arr= new int[i][i];
ArrayListInteger list = new ArrayListInteger();
for(int j=0;j(i*i);j++){
list.add(Integer.valueOf(j+1));
}
//System.out.println(list);
for(int m=0;marr[0].length;m++){
for(int n=0;narr.length;n++){
arr[m][n]=list.remove(0);
}
}
for(int k=0;karr[0].length;k++){
for(int l=0;larr.length;l++){
System.out.print(arr[k][l]+" ");
}
System.out.println();
}
}
}
代码应该可以运行
不知道楼主对打印的顺序是不是有的要求
按照顺序打印的话代码就是这样
执行的话,先输入一个数字,整型,没有做判断,输错就异常了
之后会打印i*i的矩阵