二维数组相关练习题

这篇博客探讨了三个Java编程练习,包括创建一个长度为6的int数组,确保所有元素在1~30间且不重复,接着讲解了杨辉三角的实现,最后介绍了回形数的概念和操作。

例题一、创建一个长度为6的int型数组,要求数组元素的值都在1~30之间,且是随机赋                 值。同时,要求每一个值都不相同。

​
    public static void main(String[] args) {
        //1.声明动态数组并初始化数组
        int[] arr = new int[6];
        //2.给数组每一个元素赋值
        label:
        for (int i = 0; i < arr.length; i++) {
            //数组元素的值都在1~30之间,且是随机赋值
            arr[i] = (int) (Math.random() * 30 + 1);
            //3.判断每一个值都不相同 (此时不能j < arr.length,因为 arr 还没有赋值,会死循环)
            for (int j = 0; j < i; j++) {
                if (arr[i] == arr[j]) {
                    i--;//值相等,重新给i赋值
                    continue label;//此处也可以用 break;
                }
            }
            System.out.print(arr[i] + " ");
        }
    }

​

例题二、杨辉三角

package com.www.test;


import java.util.Scanner;

/**
 * 数组练习题
 */
public class MyTest {
    public static void main(String[] args) {

        //1.声明动态数组并初始化数组
        int[][] yanghui = new int[10][];
        //2.给每一个元素赋值
        for (int i = 0; i < yanghui.length; i++) {
            //赋值每行应该有几个元素 比如:i为0时,第一行; i+1为1即第一行有一个元素
            yanghui[i] = new int[i + 1];

            //2.1给首末尾添加元素
            yanghui[i][0] = 1; //每一行的第一个元素
            yanghui[i][i] = 1; //每一行的最后一个元素

            //2.2 给非首末元素赋值
            for (int j = 1; j < yanghui[i].length - 1; j++) {
                //从第三行第二个元素开始计算,该值为上一行与之对应的值和该对应的前一个值的和
                yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
            }
        }
        //3.遍历数组
        for (int i = 0; i < yanghui.length; i++) {
            for (int j = 0; j < yanghui[i].length; j++) {
                System.out.print(yanghui[i][j] + " "); //此位置不换行
            }
            System.out.println();
        }
    }
}

例题三、回形数

package com.www.test;


import java.util.Scanner;

/**
 * 数组练习题
 */
public class MyTest {
    public static void main(String[] args) {

        /**
         * 例题三、回形数
         * huixing[minY][x]代表的是坐标,而count是数值(每次循环都自加,即1、2、3、4、5......)
         * X轴相当于行,Y轴相当于列。如:
         * minY = 0;huixing[minY][x]:第一行的每个数字,也就是numLen长度,依次赋值
         */
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int numLen = scan.nextInt();

        int[][] huixing = new int[numLen][numLen];

        int count = 0;          //要显示的数据
        int maxX = numLen - 1;  //x轴最大下标
        int maxY = numLen - 1;  //y轴最大下标
        int minX = 0;           //x轴最小下标
        int minY = 0;           //y轴最小下标

        while (minX <= maxX) {  //直到X横轴线最小下标比最大下标还大时就退出循环 说明已经把值赋到最后一个了
            for (int x = minX; x <= maxX; x++) { //向右 从最小到最大下标递增
                huixing[minY][x] = ++count;      //必须++count 不然count++第一次会赋值为0
            }
            minY ++; //说明Y纵轴的最小下标+1 向右已经赋值完一行了
            
            for (int y = minY; y <= maxY; y++) {  //向下 从最小到最大下标递增
                huixing[y][maxX] = ++count;
            }
            maxX --; //以上同理不再赘述

            for (int x = maxX; x >= minX; x--) { //向左 从最小到最大下标递减
                huixing[maxY][x] = ++count;
            }
            maxY --;

            for (int y = maxY; y >= minY; y--) { //向上 从最小到最大下标递减
                huixing[y][minX] = ++count;
            }
            minX ++;
        }
        //遍历
//        for (int i = 0; i < huixing.length; i++) {
//            for (int j = 0; j < huixing[i].length; j++) {
//                System.out.print(huixing[i][j] +"\t");
//            }
//            System.out.println();
//        }

        //增强for循环遍历数组
        for (int[] ints : huixing) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值