JAVA day03 数组,方法

本文通过四个代码示例详细介绍了Java中数组的定义、初始化、遍历、操作及方法应用,包括静态赋值、动态赋值、数组遍历、求最大值、最小值、平均值、扩容、生成随机数、比较数组内容以及实现简单的游戏逻辑。内容涵盖了数组的基本操作和方法调用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

有点像批量定义变量的说法。

定义数组

三种方式:

  1. 静态赋值:在定义的同时初始化
  2. 静态赋值:在定义的同时初始化,还能重复赋值
  3. 动态赋值:知道数组的长度,元素为默认量

数组的遍历/迭代:集体给数组赋值

代码说明1

public class Demo01Init {
	public static void main(String[] args) {
		int a = 10;
		
		// 静态赋值
		int[] arr1 = {12,2,4,5};
		//静态赋值
		int[] arr2 = new int[] {1,2,3,4};
		arr2 = new int[] {2,3,4};
		
		//动态赋值
		int[] arr3 = new int[5];//10,20,30,40,50
		
		//数组的遍历/迭代
		for(int i = 0; i < arr3.length; i++) {
			arr3[i] = (i+1) * 10;
			System.out.println(arr3[i]);
		}	

	}

}

代码说明2

import java.util.Arrays;

//定义一个长度为10的数组,求数组的最大值,最小值,平均值

public class Deom01 {

	public static void main(String[] args) {
		int[] arr = new int[10];

		for(int a = 0;a<arr.length;a++) {
			arr[a] = (int)(Math.random()*100);
			
		}
		System.out.println(Arrays.toString(arr));
		
		int max = arr[0];
		int min = arr[0];
		int sum = arr[0];
		for(int a = 0;a<arr.length;a++) {
			
			//最大值
		if(arr[a] > max) {
			max = arr[a];
		}
		//最小值
		if(arr[a] < min) {
			min = arr[a];
		}
		//求和
		sum += arr[a];
		
	}
		
		System.out.println("max="+ max);
		System.out.println("min="+ min);
		System.out.println("avg="+ sum/arr.length);
	}
}

代码说明3

import java.util.Arrays;

//把数组中的最大值,添加到末尾(数组的扩容)
//长度一旦确定就不可以改变
public class Deom02 {

	public static void main(String[] args) {
		int[] arr = new int[10];
		int[] brr = new int[11];

		for(int a = 0;a<arr.length;a++) {
			arr[a] = (int)(Math.random()*100);
			
		}
		System.out.println("arr="+Arrays.toString(arr));
		
		int max = arr[0];
		for(int a = 0;a<arr.length;a++) {
			
			//最大值
		if(arr[a] > max) {
			max = arr[a];
		}
			
	}
		System.out.println("max="+ max);
		System.arraycopy(arr, 0, brr, 0, arr.length);
		//1.需要复制的原数组
		//2.复制开始原数组的下标
		//3.复制到的新数组
		//4.新数组开始的下标
		//5.复制的元素长度
		
		System.out.println("brr="+Arrays.toString(brr));
		brr[brr.length-1] = max;//将最大值赋值给新数组最后一位
		System.out.println("brr="+Arrays.toString(brr));
	}	
}

代码说明4

import java.util.Arrays;

/*
 * 生成一套双色球号码
 * 红球:1~33随机,生成5个号码并且不能重复(按照升序排序)
 * 篮球:1~16随机,生成1个号码并加到数组的最后
 * */
public class Deom03 {

	public static void main(String[] args) {

		int red[] = new int[5];//红球
		int r = red[0];
		int blue[] = new int[1];//篮球
		int arr[] = new int[6];
		
		for(int i = 0;i<red.length;i++) {
			red[i] = (int)(Math.random()*33)+1;//这里加1是为了随机数从1开始到33
			if(red[i] != r) {
				r = red[i];
			}else {
				r = red[i]-1;
			}
			
		}
		Arrays.sort(red);//按顺序输出
		System.out.println(Arrays.toString(red));
		
		for(int j = 0;j<blue.length;j++) {
			blue[j] = (int)(Math.random()*16)+1;//这里加1是为了随机数从1开始到16
			
		}
		System.out.println(Arrays.toString(blue));
		
		System.arraycopy(red, 0, arr, 0, red.length);//将红球数组赋值给新数组
		System.out.println(Arrays.toString(arr));//6位且最后一位为0
		arr[arr.length-1]=blue[blue.length-1];//将篮球赋值给新的数组的最后一位
		System.out.println(Arrays.toString(arr));
		
	}

}

关于JVM


方法

public static void main(String[ ] args) { }

修饰符 + 返回值类型 + 方法名 + 方法参数 + 方法体 

代码说明1

import java.util.Scanner;

/*
 * 定义一个方法,该方法能够找出三个整数中的最大值并返回
 * 在主方法中调用方法测试执行
 * 
 * */
public class Demo04 {

	public static void main(String[] args) {
		
		int m = max(25,88,56);	//返回值是int类型,则需用int类型接收,后面就是方法的调用:方法名(这里可以填写变量值);
		System.out.println(m);

	}
	/*当自己写方法时
	 * public static :这俩是修饰词,不用变
	 * void:是返回类型.
	 *      1.这里的void是没有返回值;
	 *      2.基本数据类型: 8种
	 *      3.引用数据类型: 数组 -> int[] char[]
	 * 有返回值类型的方法,必须添加return返回值,没有返回值类型的方法也可以使用return,return表示方法结束.
	 * main:表示主方法,这里可以自己取名
	 *     取名的规则:1.可读性 2.第一个单词首字母小写,第二个单词首字母大写(驼峰命名法)
	 * (String[] args):这个括号里代表,类型+变量名,当需要使用多个类型时,中间加‘,’隔开
	 * *
	 */
	public static int max(int a,int b,int c) {
		if(a>b && a>c) {
			return a;
		}else if(b>a && b>c) {
		return b;
		}else {
			return c;//方法里返回类型为int,则需return一个int类型
		}
	} 

}

代码说明2

import java.util.Arrays;

//设计一个方法,用于比较两个数组的内容是否相同
public class Demo05 {

	public static void main(String[] args) {
	int[] a1 = {20,23,56};
	int[] b1 = {23,58,55};
	boolean c = compare(a1,b1);//boolean返回,就boolean接收,后面调用
	System.out.println(c);

	}
	public static boolean compare(int[] a, int[] b) {
		if(a.length != b.length) {
			return false;
		}
		for(int i=0;i<a.length;i++) {
			if(a[i]!=b[i]) {
				return false;
			}
		}
		
		return true;
	}

}

代码说明3(数组,方法调用综合)

import java.util.Scanner;

/*随机生成五个字母
 * 用户猜字母
 * 提示:对了几个,错了几个
 * 
 * ABCGD
 * ABCGF
 * 错了一个对了四个
 * 
 * 思路:
 * 1.随机生成五个不同字母 这是一个字符数组1
 * 2.用户控制台输入字母 String>拆解>字符数组2
 * 3.比较两个字符数组 然后提示
 * 4.一个一个比较,如果不相同重复2,3步骤
 * */
public class Deom06 {

	public static void main(String[] args) {
		//1.调用随机生成方法
		char[] result = randomLetter();
		System.out.println(result);
		//4.重复2.3
		while(true) {
		//2.用户控制台输入字母
		Scanner sc = new Scanner(System.in);
		System.out.println("一起来猜字母吧,请输入五个大写字母");
		String str = sc.next();
		//调用字符串变成字符数组的方法
		char[] guess = guessLetter(str);
		
		//3.调用
		int[] tips = compare(result,guess);
		System.out.println("你猜的字母值跟答案有"+tips[0]+"相同" + ",字母位置有"+tips[1]+"相同");
		
		//5.游戏结束
		if(tips[0]==5 && tips[1]==5){
			System.out.println("恭喜你猜对啦");
			break;
		}
		}
		//

	}
	//1.随机生成五个不同字母
	public static char[] randomLetter() {
		char[] chars = new char[5];
		for(int i=0;i<chars.length;i++) {
			chars[i] =(char)(Math.random() * 26 + 'A');
			//因为生成不同的5个字母所以要去除重复值
			for(int j=0;j<i;j++) {
				if(chars[i]==chars[j]) {
					i--;//因为判断了有重复值,所以i--
					break;//结束循环重新进入上一层循环再次随机赋值
				}
			}
		}
		
		return chars;
	}
	//2.将从键盘获得的字符串,转换成字符数组
	public static char[] guessLetter(String str) {
		//这里为什么是String类型呢,因为调用方法时,从键盘获得的类型就是字符串类型
		char[] chars = new char[5];
		for(int i =0;i<chars.length;i++) {
			//下面这里是利用数组的遍历,然后经过str.charAt这个方法获取str字符串里对应 下标的值
			chars[i] = str.charAt(i);
		}
		return chars;
		
	}
	//3.比较两个字符数组
	public static int[] compare(char[] result,char[] guess) {
		int arr[] = new int[2];
		//arr[0]表示存字符值相同个数;arr[1]表示存字符位置相同
		for(int i = 0;i<result.length;i++) {
			for(int j=0;j<guess.length;j++) {
				if(result[i]==guess[j]) {
					//判断值相等
					arr[0]++;
				}if(result[i]==guess[j] && i==j) {
					//对应位置值相等
					arr[1]++;
				}
			}
		}
		return arr;//返回存的相同个数arr0和1的数组
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值