一维数组和二维数组复习

本文回顾了一维和二维数组的初始化方式,包括静态和动态初始化,并提供了遍历二维数组的示例代码。此外,介绍了不同类型数组元素的默认初始化值,一维数组的内存解析以及数据结构中的线性表、树形结构和图形结构概念。还涉及了杨辉三角的练习和创建随机不重复数组的拓展问题。
摘要由CSDN通过智能技术生成

1. 写出一维数组初始化的方式

int[] arr = new int[]{1,2,3}  // 静态初始化

int[] arr = new int[3]  // 动态初始化

数组一旦初始化,数组的长度就是确定的,且是不可修改的  arr.length

2. 写出二维数组初始化的方式

int[][] arr = new int[4][3]  //动态初始化1

int[][] arr = new int[4][]  //动态初始化2

int[][] arr = new int[][]{{1,2,3},{4,5},{6,7}};

3. 如何遍历如下二维,数组

int[] arr = new int[][]{{1,2,3},{4,5},{7,8}}

for(int i=0;i<arr.length;i++ )

    for(int j=0; j<arr[i].length;j++)

                System.out.print(arr[i][j] + "\t");

    System.out.println();

4. 不同类型的一维数组元素的默认初始化值各是多少?

整型: 0 boolean: false 浮点型:0 char:0 引用类型:null

5.一维数组的内存解析

String[] strs = new String[5];

strs[2] = "Tom"

strs = new String[3];

 6. 数据结构

① 数据与数据之间的逻辑关系:集合、一对一、一对多、多对多

②数据的存储结构:

线性表:顺序表(比如:数组)、链表、栈、队列

树形结构:二叉树

图形结构:有效图、无效图

7. 杨辉三角练习

package com.lxy.exer;

/*使用二维数组打印一个10行的杨辉三角
提示:
1.第1行有1个元素,第n行有n个元素
2.每一行的第一个元素和最后1个元素都是1
从第三行开始,对于非第一个和第三个的元素,即 yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]*/
public class YangHuiTest {
	public static void main(String[] args) {
		// 1.声明并初始化二维数组
		
		int[][] yanghui = new int[10][];
		
		// 2.数组元素赋值
		for(int i = 0; i < yanghui.length; i++){
			yanghui[i] = new int[i + 1];
			// 2.1 给首末元素赋值
			yanghui[i][0] = 1;
			yanghui[i][i] = 1;
			// 2.2给每行的非首末元素赋值
			if(i > 1){
				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();
		}
	}

}

8.拓展:创建一个长度为6的int型数组,要求数组的值都在1-30之间,且是随机复制。同时,元素的值各不相同。

package com.lxy.exer;

public class tuozhan {
	public static void main(String[] args) {
		int[] arr = new int[6];
		for(int i = 0; i< arr.length; i++){
			arr[i] = (int)(Math.random() * 30) + 1;
			for(int j = 0 ; j < i; j++){
				if(arr[i] == arr[j]){
					i--;
					break;
				}
			}
			System.out.println(arr[i]);
		}
	}

}

9.回形数

package com.lxy.exer;

import java.util.Scanner;

public class RectangleTest {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一个数字:");
		int len = scanner.nextInt();
		
		int[][] arr = new int[len][len];
		int s = len * len;
		int k = 1; // 向右·
		int i = 0, j = 0;
				
		for(int m = 1;m <= s;m++){
			if(k == 1){
				if(j < len && arr[i][j] == 0){
					arr[i][j++] = m;
				}else{
					k = 2;
					i++;
					j--;
					m--;
					
				}
			}else if(k == 2){
				if(i < len && arr[i][j] == 0){
					arr[i++][j] = m;
				}else{
					k = 3;
					i--;
					j--;
					m--;
				}
			}else if(k == 3){
				if(j >= 0 && arr[i][j] == 0){
					arr[i][j--] = m;
				}else{
					k = 4;
					i--;
					j++;
					m--;
				}
			}else if(k == 4){
				if(i >= 0 && arr[i][j] == 0){
					arr[i--][j] = m;
				}else{
					k = 1;
					i++;
					j++;
					m--;
				}
			}
		}
		
		// 遍历
		for(int m = 0;m < arr.length; m++){
			for(int n = 0;n < arr[m].length; n++){
				System.out.print(arr[m][n] + "\t");
			}
		System.out.println();
		
		}
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值