0
点赞
收藏
分享

微信扫一扫

随机生成规律字母图形java

Separes 2022-02-05 阅读 53

一、问题描述:

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

二、思路分析:

        本题可以通过random()方法将二维数组a[i][j]第一行确定好,由第一行来确定剩余的数组,所以思考时也是从第二行开始。

        以上图i=j这一斜对角线为参考线,分两种情况:

        (1)当j>=i时,用二维数组表示为a[i][j]=a[i-1][j-1]。

        (2)当j<i时,在j=0时,与一行的数一一对应,即a[i][0]=a[0][i],

                 之后0<j<i的情况就与第一种情况相似。

三、代码部分:

 

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input=new Scanner(System.in);
		//定义行和列数
		int a=input.nextInt();
		int b=input.nextInt();
		//定义一个字符数组
		char [][]n=new char[a][b];
		//定义一个计数器,用来换行
		int c = 0;
		//从第一行找规律入手,所以先将第一行的内容确定
		for(int j=0;j<b;j++){
			n[0][j]=(char)(65+(int)(Math.random()*26));
		}
		for(int i=0;i<a;i++){
			for(int j=0;j<b;j++){
					if(j>=i&&j>0&&i>0){		//从列数大于行数做分界点,在这之后的数都为上一列数行数加1
						n[i][j]=n[i-1][j-1];
					}else if(j<i){
						if(j==0&&i>0){
							n[i][0]=n[0][i];
						}else{
							n[i][j]=n[i-1][j-1];
						}
					}
			}
		}
		for(int i=0;i<a;i++){
			for(int j=0;j<b;j++){
				System.out.print(n[i][j]);
				c++;
				if(c%b==0){
					System.out.println();
				}
			}
		}
	}

}

效果图:

                                                            

 

举报

相关推荐

0 条评论