Java数组练习,输出杨辉三角,回形数等

Java数组练习,输出杨辉三角,回形数等

Richer Chen
2024-03-19 / 0 评论 / 75 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年03月19日,已超过198天没有更新,若内容或图片失效,请留言反馈。
本文共 500 个字数,平均阅读时长 ≈ 2分钟

练习一

定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,总和,平均值并输出出来。要求:所有随机数都是两位数:[10,99]
提示: 求[a,b]范围内的随机数: (int)(Math.random() * (b - a + 1)) + a;

code代码

/**
 * 数组练习:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,总和,平均值
 * 并输出出来。
 * 要求:所有随机数都是两位数:[10,99]
 * 提示: 求[a,b]范围内的随机数: (int)(Math.random() * (b - a + 1)) + a;
 */
public class ArrayExer {
    public static void main(String[] args) {
        //动态创建数组并随机赋值整数
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 89) + 10;
        }

        //定义和计算最大值、最小值、总和、平均值
        int min = arr[0], max = arr[0], sum = 0, avg = 0;
        String arrStr = "";
        for (int i = 0; i < arr.length; i++) {
            arrStr = arr[i] + " " + arrStr;
            if(arr[i] > max) max = arr[i];
            if(arr[i] < min) min = arr[i];
            sum += arr[i];
        }
        avg = sum / arr.length;
        
        //输出结果
        System.out.println("数组元素:" + arrStr);
        System.out.println("最大值:" + max);
        System.out.println("最小值:" + min);
        System.out.println("总和:" + sum);
        System.out.println("平均值:" + avg);
    }
}

运行效果

ltwpvr3e.png

练习二

输出杨辉三角如下:
ltwt85rb.png

code代码

/*
输出杨辉三角
 */
public class YangHui {
    public static void main(String[] args) {
        //动态定义二位数组
        int[][] arr = new int[10][];
        //定义外部数组
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new int[i + 1];
        }

        //给数组赋值
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                //如果是第一行和最后一行,值为1
                if (j == 0 || j == arr[i].length - 1) {
                    arr[i][j] = 1;
                } else {
                    //否则,值为上一行前一个和上一行当前的值之和
                    arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
                }
            }
        }

        //打印数组
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

输出结果

ltwt9lnj.png

回形数

回形数:从键盘输入一个整数(1~20),则以该数字为矩阵的大小,把1,2,3...n*n 的数字按照顺时针螺旋的形式填入其中。
例如: 输入数字2,则程序输出:
1 2
4 3
输入数字
1 2 3
8 9 4
7 6 5
00 01 02 12 22 21 20 10 11
输入数字4,则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

code代码

import java.util.Scanner;

/*
回形数:从键盘输入一个整数(1~20),则以该数字为矩阵的大小,把1,2,3...n*n 的数字按照顺时针螺旋的形式填入其中。
例如: 输入数字2,则程序输出:
1 2
4 3
输入数字
1 2 3
8 9 4
7 6 5
00 01 02 12 22 21 20 10 11
输入数字4,则程序输出:
1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7
 */
public class ArrayExer2 {
    public static void main(String[] args) {
        //从键盘获取一个整数
        int n = 0;
        Scanner scanner = new Scanner(System.in);
        while (n < 1 || n > 20) {
            System.out.println("请输入1~20之间的整数");
            n = scanner.nextInt();
        }

        //动态定义数组
        int[][] array = new int[n][n];

        //给数组赋值  00 01 02 03  13 23 33  32 31 30  20 10  11 12  22 21
        //k为方向k=1向右  k=2向下 k=3向左 k=4向上
        int k = 1;
        //m为总的数值
        int m = 1;
        //i,j为数组的行和列
        int i = 0;
        int j = 0;
        for (;m <= 16; m++) {
            //向右
            if(k == 1) {
                //当j小于列数且该位置为空则赋值
                if (j < n && array[i][j] == 0) {
                    array[i][j++] = m;
                } else {
                    //方向改变
                    k = 2;
                    i++;
                    j--;
                    m--;
                }
            } else if(k == 2) {
                if (i < n && array[i][j] == 0) {
                    array[i++][j] = m;
                } else {
                    k = 3;
                    i--;
                    j--;
                    m--;
                }
            } else if(k == 3) {
                if (j >= 0 && array[i][j] == 0) {
                    array[i][j--] = m;
                } else {
                    k = 4;
                    i--;
                    j++;
                    m--;
                }
            } else if(k == 4) {
                if (i >= 0 && array[i][j] == 0) {
                    array[i--][j] = m;
                } else {
                    k = 1;
                    i++;
                    j++;
                    m--;
                }
            }

        }


        //输出数组
        System.out.println();
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                System.out.print(array[i][j] + "\t");
            }
            System.out.println("");
        }

        //关闭资源
        scanner.close();
    }
}

运行效果

lty2e594.png

2

打赏

海报

正在生成.....

评论 (0)

语录
取消