Java数组的遍历(使用不同方式)

使用for循环来进行数组遍历 

例题1:给一组数组,使用不同方式对数组遍历

解:方式1:通过下标:实现数组的顺序和逆序遍历

       方式2:foreach  只能顺序遍历,不能修改数组值

import java.util.Arrays;

//数组的遍历
public class Test {
	public static void main(String[] args) {
		int[] numbers = {1,2,3,4,5,6,7};
	
		//顺序
		for(int i = 0;i < numbers.length;i++) {
			System.out.print(numbers[i]+"\t");
			numbers[i] = numbers[i] * 10;
		}
		System.out.println();
		//逆序
		for(int i = numbers.length-1;i >= 0;i--) {
			System.out.print(numbers[i]+"\t");
		}
		System.out.println();
	
		for(int n :numbers) {
			n = n*10;
			System.out.print(n+"\t");
		}
		System.out.println(Arrays.toString(numbers));
	}
}

运行结果:

1	2	3	4	5	6	7	
70	60	50	40	30	20	10	
100	200	300	400	500	600	700
[10, 20, 30, 40, 50, 60, 70]

例题2:使用数组依次按照顺序保存1-15之间的数字,产生一个随机下标,并将该位置的数据设置为0

解:使用for循环遍历字符串,int i(下标),n(开始的第一个值);i要小于数组的长度,i和n都是递增的。使用Math.random()产生随机数,指定下标位置的数据设置为0

import java.util.Arrays;

public class Test06 {
	public static void main(String[] args) {
		//使用数组,依次按照顺序保存1-15之间的数字
		int [] numbers = new int [15];
		for(int i =0,n=1;i<numbers.length;i++,n++) {
			numbers[i] = n;
		}
		System.out.println("初始化数据集:"+Arrays.toString(numbers));
		//产生一个随机下标,并将该位置的数据设置为0
		int randIndex = (int) (Math.random() * numbers.length);
		numbers[randIndex] = 0;//指定下标位置的数据设置为0
		System.out.println("随机抹去数据:"+Arrays.toString(numbers));
	}
}

 运行结果

初始化数据集:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
随机抹去数据:[1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

 例题3:使用数组遍历,在一组连续不完整和一组连续完整的整数中找到缺失值

解:首先定义sum和total都为0,遍历数组;分别把不完整和完整的整数存入sum和total中,输出为total-sum

public class Test {
	public static void main(String[] args) {
		//一组整数:连续不完整
		int [] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 12, 13, 14, 15};
		//一组整数:连续完整
		int [] target = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
		int sum  = 0;
		int total = 0;
		for(int i = 0;i<numbers.length;i++) {
			sum = sum +numbers[i];
			total  = total + target[i];
		}
		System.out.println(total-sum);
	}
}

 运行结果:11

例题4:使用数组遍历,输出可搭配套餐

解:本题要解决的是把foods数组和drinks数组组合套餐问题,在遍历字符串外部定义counter(为次数),遍历两次数组,都从下标0开始,范围小于长度,i++

public class Test {
	public static void main(String[] args) {
		String[] foods = {"汉堡","菠萝派","肉夹馍","披萨"};
		String[] drinks = {"可乐","雪碧","果汁","冰峰"};
		//外层:遍历foods数组
		int counter = 1;
		for(int i = 0;i<foods.length;i++) {
			//内层遍历drinks数组
			for(int k = 0;k<drinks.length;k++) {
				if(counter < 10) {
					System.out.printf("套餐0%d:%s,%s\n",counter++,foods[i],drinks[k]);
				}else {
					System.out.printf("套餐%d:%s,%s\n",counter++,foods[i],drinks[k]);
				}			
			}
		}
	}
}

运行结果 

套餐01:汉堡,可乐
套餐02:汉堡,雪碧
套餐03:汉堡,果汁
套餐04:汉堡,冰峰
套餐05:菠萝派,可乐
套餐06:菠萝派,雪碧
套餐07:菠萝派,果汁
套餐08:菠萝派,冰峰
套餐09:肉夹馍,可乐
套餐10:肉夹馍,雪碧
套餐11:肉夹馍,果汁
套餐12:肉夹馍,冰峰
套餐13:披萨,可乐
套餐14:披萨,雪碧
套餐15:披萨,果汁
套餐16:披萨,冰峰

例题4:使用数组遍历,计算日期是当年的第几天

解:分别截取年 月 日 转成整数类型。方法1直接使用LocalDate.of()方法;方法2使用数组遍历

import java.time.LocalDate;
import java.util.Arrays;

public class Test10 {
	public static void main(String[] args) {
		//计算日期是当年的第几天
		String dateStr = "2024-01-22";
		//分别截取年 月 日 
		//转成整数类型
		int year = Integer.parseInt(dateStr.substring(0, 4));
		int month = Integer.parseInt(dateStr.substring(5,7));
		int days = Integer.parseInt(dateStr.substring(8));
		//方法1:
		System.out.println(LocalDate.of(year, month, days).getDayOfYear());
		//方法2:
		int[] arr = {31,28,31,30,31,30,31,31,30,31,30,31};
		if(year % 4 ==0 && year % 100 !=0 ||year % 100 ==0) {
			arr[1]++;
		}
		//累计当前月份之前的所有月份总天数
		int DayOfYear =0;
		for(int i = 0;i <= month -2;i++) {
			DayOfYear = DayOfYear + arr[i];
		}
		//累加当前月份的天数
		DayOfYear = DayOfYear + days;
		System.out.println(DayOfYear);
	}
}

运行结果 

22
22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值