java数组方法案例

案例一:买飞机票

需求:

机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

分析:

键盘录入机票的原价,仓位类型,月份信息,调用方法返回机票最终的优惠价格。
方法内部应该先使用if分支判断月份是是旺季还是淡季,然后使用switch分支判断是头等舱还是经济舱。
选择对应的折扣进行计算并返回计算的结果,如果信息录入有误返回价位为-1元代表即可。

 代码:

public class Exer {
	public static void main(String[] args) {

		//1、先让用户输入机票原价,月份,仓位信息
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入机票原价:");
		double pirce = sc.nextDouble();
		System.out.println("请输入月份(1-12):");
		int month = sc.nextInt();
		System.out.println("请选择仓位类型:");
		String type = sc.next();
		System.out.println("机票优惠后的价格为:" + calc(pirce,month,type));
	}

	//定义方法接受信息,统计优惠后的价格返回
	public static double calc(double pirce, int month, String type) {
		//判断用户选择的信息情况
		if (month >= 5 && month <= 10) {
			//旺季
			switch (type) {
				case "头等舱":
					pirce *= 0.9;
					break;
				case "经济舱":
					pirce *= 0.85;
					break;
				default:
					System.out.println("您输入的仓位类型有误~");
					pirce = -1;
			}
		}
		else if (month == 11 || month == 12 || month >= 1 && month <= 4) {
			//淡季
			switch (type) {
				case "头等舱":
					pirce *= 0.7;
					break;
				case "经济舱":
					pirce *= 0.65;
					break;
				default:
					System.out.println("您输入的仓位类型有误~");
					pirce = -1;
			}
		}
		else {
			System.out.println("您输入的月份有误~");
			pirce = -1;
		}
		return pirce;
	}
}

结果:

 

案例2:找素数 

需求: 判断101-200之间有多少个素数,并输出所有素数

说明:除了1和它本身以外,不能被其他正整数整除,就叫素数。

分析:

        101-200之间的数据可以采用循环依次拿到; 每拿到一个数,判断该数是否是素数。

        判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数。

如果最终判定是素数,即可输出展示。

代码: 

public class Exer {
	public static void main(String[] args) {
		//1、定义一个循环,找到101-200之间全部的数据
		for (int i = 101; i < 200; i++) {

			boolean flag = true;//一开始认为当前素数是素数
			//判断当前遍历的这个数是否是素数
			for (int j = 2; j < i / 2; j++) {
				if(i % j == 0){
					flag = false;
					break;
				}
			}
			//3、根据判定的结果选择是否输出这个数据,是素数则输出
			if(flag){
				System.out.print(i + "\t");
			}
		}
	}
}

 结果:

 案例3:评委打分案例

需求

在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

分析:

6个评委的分数录入到程序中去 ----> 使用数组
遍历数组中每个数据,进行累加求和,并找出最高分、最低分。
按照分数的计算规则算出平均分。

 代码:

public class Exer {
	public static void main(String[] args) {
		//1、定义一个动态初始化数组,用于录入6个评委的分数
		int[] scores = new int[6];
		//2、输入6个评委的打分
		Scanner sc = new Scanner(System.in);
		for (int i = 0; i < scores.length; i++) {
			System.out.println("请输入第" + (i + 1) + "个评委的打分:");
			scores[i] = sc.nextInt();
		}

		//3、遍历数组中的每个数据,找出最大值和最小值
		int max = scores[0];
		int min = scores[0];
		int sum = 0;
		for (int i = 0; i < scores.length; i++) {
			if(scores[i] > max){
				max = scores[i];
			}
			if(scores[i] < min){
				min = scores[i];
			}
			sum += scores[i];
		}
		//4、统计平均分
		double avg = (sum - max - min) * 1.0 / (scores.length - 2);
		System.out.println("最终选手得分为:" +avg);
	}
}

结果: 

案例4:数字加密

需求:

某系统的数字密码:比如1983,采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。

分析:

将每位数据存入到数组中去,遍历数组每位数据按照规则进行更改,把更改后的数据从新存入到数组中。
将数组的前后元素进行交换,数组中的最终元素就是加密后的结果。

 代码:

public class Exer6 {
	public static void main(String[] args) {
		/*
		需求:
		某系统的数字密码:比如1983,采用加密方式进行传输,规则如下:
		先得到每位数,然后每位数都加上5,对10求余,最后将所有数字反转,得到一串新数。
    	 */
		Scanner sc = new Scanner(System.in);
		System.out.println("请您输入需要加密数字的个数:");
		int length = sc.nextInt();
		//1、定义一个数组存储需要加密的数据
		int[] arr = new int[length];

		//2、录入需要加密的数字
		for (int i = 0; i < arr.length; i++) {
			System.out.println("请输入加密的第" + (i + 1) + "个数字:");
			arr[i] = sc.nextInt();
		}
		//3、打印数组内容看一下
		System.out.print("加密前:");
		printArray(arr);

		//4、加密
		for (int i = 0; i < arr.length; i++) {
			arr[i] = (arr[i] + 5) % 10;

		}
		//5、对加密的数组进行反转
		for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
			int temp = arr[j];
			arr[j] = arr[i];
			arr[i] = temp;
		}
		//6、打印看加密后的数组
		System.out.print("加密后:");
		printArray(arr);
	}

	//定义方法实现打印数组
	public static void printArray(int[] arr){
		System.out.print("[");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(i == arr.length - 1? arr[i] : arr[i] + ",");
		}
		System.out.println("]");
	}
}

结果:

 

 

 

 




### Java方法数组的使用 #### 创建并初始化数组Java 中创建和初始化数组有多种方式。一种常见的方式是在声明时指定大小,并通过 `new` 关键字来分配内存空间[^3]。 ```java int[] month = new int[12]; ``` 另一种更简洁的方式来定义已知元素值的一维整型数组是直接给出初始值列表: ```java int[] numbers = {5, 2, 8, 1, 3}; ``` #### 访问数组中的元素及其属性 可以通过索引来访问单个元素,而要获得整个数组的信息,则可利用 `.length` 属性获取其长度[^4]。 ```java System.out.println("The first element is " + numbers[0]); System.out.printf("There are %d elements in this array.\n", numbers.length); ``` #### 排序操作 为了对数组内的数值按升序排列,可以调用来自 `java.util.Arrays` 类下的静态成员函数 `sort()` 方法[^1]。 ```java import java.util.Arrays; // ... inside some method ... Arrays.sort(numbers); // 对数组进行排序 System.out.println(Arrays.toString(numbers)); // 输出排序后的结果 ``` #### 复制数组 当需要复制一个已有数组的内容到另一个新数组里时,除了手动逐项赋值外,还可以借助 `clone()` 或者再次运用 `Arrays.copyOf()` 函数实现深拷贝效果。 ```java int[] copyOfNumbers = Arrays.copyOf(numbers, numbers.length); ``` #### 修改数组内容 对于基本类型的数组来说,修改其中某个位置上的值只需简单地给定新的数值即可;而对于对象类型而言,则可能涉及到更深一层的对象状态变更问题。 ```java numbers[0] = 10; System.out.println("After modification: " + Arrays.toString(numbers)); ``` #### 数组作为参数传递至自定义方法内 编写接受数组作为输入参数的方法也很容易做到,在此过程中需要注意区分传参模式究竟是值传递还是引用传递特性所带来的影响差异。 ```java public static void printArray(int[] arr){ for (var item : arr) { System.out.print(item + " "); } } printArray(copyOfNumbers); ``` 以上便是有关于如何在 Java 编程语言环境下处理数组以及相关联的操作介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值