初学javaDay6

一、二维数组

定义二维数组的格式:
格式1:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]来获取
表示获取第m+1个一维数组的第n+1个元素
格式2:
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1];
格式3:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:
int[][] arr = {{1,2,3},{4,6},{6}};
练习题:
A:给定数组,int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}完成遍历操作,要求最终[1,2,3,4,5,6,7,8,9]
B:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
C:打印杨辉三角形(行数可以键盘录入)
--------------------------------------我是一条华丽的分割线--------------------------------
答案篇:
A:

/*
给定数组,int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}完成遍历操作,要求最终[1,2,3,4,5,6,7,8,9]
*/
class Array2Demo{
	public static void main(String[] args){
		int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
		printArray(arr);
	}
	
	//遍历输出
	public static void printArray(int[][] arr){
		System.out.print("[");
		for(int i = 0; i< arr.length; i++){
			for(int j = 0; j < arr[i].length; j++){
				if(i == arr.length - 1 && j == arr[i].length - 1 ){
					System.out.println(arr[i][j]+"]");
				}else{
					System.out.print(arr[i][j]+",");
				}
				
			}
		}
	}
}

B:

/*
公司年销售额求和
		某公司按照季度和月份统计的数据如下:单位(万元)
		第一季度:22,66,44
		第二季度:77,33,88
		第三季度:25,45,65
		第四季度:11,66,99
*/
class Array2Demo2{
	public static void main(String[] args){
		int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
		int sum = getSum(arr);
		System.out.println("公司的年销售额为"+sum+"万元");
	}
	
	//求和
	public static int getSum(int[][] arr){
		int sum = 0;
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j < arr[i].length; j++){
				sum += arr[i][j];
			}
		}
		return sum;
	}
}

C:

/*
打印杨辉三角形(行数可以键盘录入)
1 
1 1
1 2 1
1 3 3 1 
1 4 6 4 1
1 5 10 10 5 1
*/
import java.util.Scanner;
class Array2Demo3{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入行数:");
		int m = sc.nextInt();
		int [][] arr = new int[m][m];
		arraySetValue(arr);
		printArray(arr);
	}
	
	//给数组赋值 
	//每列的第一个值和最后一个值赋值为1
	//从第三行开始,中间的每一个数据都是上一行的前一列加上一行的本列之和
	public static void arraySetValue(int[][] arr){
		for(int i = 0; i < arr.length; i++){
			arr[i][0] = 1;
			arr[i][i] = 1;
			if(i >= 2){
				for(int j = 1; j < arr[i].length - 1; j++){
					arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
				}
			}
		}
	}
	
	//按照格式打印杨辉三角形
	public static void printArray(int[][] arr){
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j <= i; j++){
				System.out.print(arr[i][j]+"\t");	
			}
			System.out.println();
		}
		
	}
}

二、 数组高级(排序和查找))

1.排序
冒泡排序:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
选择排序:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

2.查找
基本查找:数组元素无序
二分查找:数组元素有序

练习题:
A int[] arr = {78,33,45,12,5,43,51,10};(用冒泡排序)
B 键盘录入5个数的一维数组,然后查询指定元素在数组中第一次的索引值
举例:{10,20,3,45,89} ; 45元素在书中第一次出现的索引值是3
C 请将"我" “爱” "你"存入数组,然后正着和反着输出,(提示:定义字符串数组)
D 键盘录入6个数据,获取数组中的最大值
--------------------------------------我是一条华丽的分割线--------------------------------
答案篇:
A:

/*
	冒泡排序
*/
class BubbleSort{
	public static void main(String[] args){
		int[] arr = {78,33,45,12,5,43,51,10};
		sortArray(arr);
		printArray(arr);
	}
	
	//对数组进行冒泡排序
	public static void sortArray(int[] arr){
		for(int i = 0; i < arr.length - 1; i++){
			for(int j = 0; j < arr.length - 1 - i ; j++){
				if(arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
	}
	
	//打印数组
	public static void printArray(int[] arr){
		System.out.print("[");
		for(int i = 0; i < arr.length; i++){
			if(i == arr.length - 1){
				System.out.print(arr[i]+"]");
			}else{
				System.out.print(arr[i]+",");
			}
		}
	}
}

B:

/*
	键盘录入5个数的一维数组,然后查询指定元素在数组中第一次的索引值
		举例:{10,20,3,45,89} ; 45元素在书中第一次出现的索引值是3
*/
import java.util.Scanner;
class ArrayDemo{
	public static void main(String[] args){	
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int num = sc.nextInt();
		int[] arr = {10,20,3,45,89};
		int index = searchIndex(arr,num);
		System.out.println("该数在数组中第一次出现的索引值为:"+index);
	}
	
	public static int searchIndex(int[] arr,int num){
		for(int i = 0;i<arr.length;i++){
			if (arr[i] == num){
				return i;
			}
		}
		return -1;
	}
}

C:

/*
	请将"我" "爱" "你"存入数组,然后正着和反着输出,(提示:定义字符串数组)
*/
class ArrayDemo3{
	public static void main(String[] args){	
		String[] arr = {"我","爱","你"};
		System.out.println("正着输出的结果为:");
		printArray(arr);
		
		System.out.println("------------------");
		System.out.println("反着输出的结果为:");
		reverse(arr);
		printArray(arr);
	}
	
	//将数组逆序
	public static void reverse(String[] arr){
		for(int i = 0;i < arr.length/2;i++){
			String temp = arr[i];
			arr[i] = arr[arr.length-1-i];
			arr[arr.length-1-i] = temp;
		}
	}
	
	//输出
	public static void printArray(String[] arr){
		System.out.print("[");
		for(int i = 0;i < arr.length;i++){
			if(i == arr.length - 1){
				System.out.println("\""+arr[i]+"\"]");
			}else{
				System.out.print("\""+arr[i]+"\",");
			}
		}
	}
}

D:

/*
	键盘录入6个数据,获取数组中的最大值。
*/
import java.util.Scanner;
class ScannerDemo{
	public static void main(String[] args){	
		int[] arr = new int[6];
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请依次输入六个数:");
		for(int i = 0;i<arr.length;i++){
			arr[i] = sc.nextInt();
		}
		int max = getMax(arr);
		System.out.println("数组中的最大值为:"+max);
	}
	
	//获取最大值
	public static int getMax(int[] arr){
		int max = arr[0];
		for(int i = 1;i<arr.length;i++){
			if(arr[i] > max){
				max = arr[i];
			}
		}
		return max;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值