java数组练习

点击打开数组知识总结

1.数组遍历

public class Array {
	public static void main(String args[]){
		//数组的遍历
		int[] arr={1,2,3,5,6};
		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]+", ");
		}
	}
}

运行结果:



2.输出数组中的最值

public class Array {
	public static void main(String args[]){
		
		//获取数组最值
		int[] arr2={11,87,63,59,36,72};
		int max=arr2[0];
		for(int i=0;i<arr2.length;i++){
			if(arr2[i]>max)
				max=arr2[i];
		}
		System.out.println("arr2的max: "+max);
		System.out.println("arr2的min: "+getMin(arr2))
	}
/*方法改进
	     需求:获取元素最小值
	      两个明确:
		返回值类型:int
		参数列表:int[] arr
	*/
	public static int getMin(int[] arr){
		int min=arr[0];
		for(int i=0;i<arr2.length;i++){
			if(arr[i]<min)
				min=arr[i];
		}
		return min;
	}
}

运行结果:



3.数组元素逆序排列

分析:

A:定义一个数组,并进行静态初始化

B:思路:

把0索引和arr.length-1的数据交换

把1索引和arr.length-2的数据交换

……

只要做到arr.length/2的时候即可

public class Array {
	public static void main(String args[]){
			
		//数组元素逆序
		int[] arr3={11,22,33,55,66,77};
		System.out.println("逆序前");
		printArr(arr3);
		System.out.println("\n逆序后");
		reverse(arr3);
		printArr(arr3);
	}
//数组逆序方法:
public static void reverse(int[] arr){
		for(int i=0;i<arr.length/2;i++){
			int temp=arr[i];
			arr[i]=arr[arr.length-1-i];
			arr[arr.length-1-i]=temp;
		}
	}
	public static void printArr(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]+", ");
		}
	}
}

另法:改变方法体

public static void reverse(int[] arr){

		for(int start=0,end=arr.length-1;start<=end;start++,end--){
			int flag=arr[start];
			arr[start]=arr[end];
			arr[end]=flag;
		}
	}

 运行结果: 

方法二:

改变方法体,第一个索引最后一个索引分别设为start和end,根据索引交换数组元素的值,每交换一次,start++,end--,直到start等于end为止

public static void reverse(int[] arr){

		for(int start=0,end=arr.length-1;start<=end;start++,end--){
			int flag=arr[start];
			arr[start]=arr[end];
			arr[end]=flag;
		}
	}


4.数组查表法

根据键盘录入索引,查找对应星期

import java.util.Scanner;
public class Array {
	public static void main(String args[]){

		//数组查表法:根据键盘录入索引,查找对应星期
				String[] strArr={"星期1","星期2","星期3","星期4","星期5","星期6","星期7"};
				System.out.print("请输入一个索引(0~6):");
				Scanner sc=new Scanner(System.in);
				int index=sc.nextInt();
				System.out.println("你要查找的日期是:"+strArr[index]);
	}
}
运行结果:




5.数组基本查找

 数组元素查找(查找指定元素第一次在数组中出现的索引)

分析:定义一个数组,并静态初始化,遍历数组,依次获取数组中的每一个元素, 和已知的数据进行比较,如果想等,就返回当前索引值     ;如果要查找的元素在数组中不存在,则一般返回负数-1

public class Array {
	public static void main(String args[]){
		
		int[] searchArr={22,521,11,12,666,22};
		System.out.println("2第一次在数组中出现的索引为:"+getArr(searchArr, 2));
		System.out.println("22第一次在数组中出现的索引为:"+getArr(searchArr, 22));
		
		
	}	
	
	
	/*	需求:查找指定数值第一次在数组中出现的索引
		两个明确:
			返回值类型int;
			参数列表:int[] arr,int value;
	*/
	public static int getArr(int[] arr,int value){
		int index=-1;
		for(int i=0;i<arr.length;i++){
			if(arr[i]==value)
				index=i;
			break;
		}
		return index;
	}
	
}
运行结果:


方法二:

改变方法体:

public static int getArr(int[] arr,int value){
		for(int i=0;i<arr.length;i++){
			if(arr[i]==value)
				return i;
		}
		return -1;
	}




### Java 数组练习题及相关代码 以下是几个经典的 Java 数组练习题及其对应的实现代码: #### 1. **求数组中的最大值** 通过遍历数组找到其中的最大值。 ```java public class MaxValue { public static void main(String[] args) { int[] arr = {3, 5, 7, 2, 8}; System.out.println("Max Value: " + findMax(arr)); } public static int findMax(int[] arr) { if (arr == null || arr.length == 0) { throw new IllegalArgumentException("Array is empty or null"); } int max = arr[0]; for (int num : arr) { if (num > max) { max = num; } } return max; } } ``` 此代码实现了求数组中最值的功能[^1]。 --- #### 2. **求数组的平均值** 计算整型数组中所有元素的平均值。 ```java public class AverageValue { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6}; System.out.println("Average Value: " + calculateAvg(arr)); } public static double calculateAvg(int[] arr) { if (arr == null || arr.length == 0) { throw new IllegalArgumentException("Array is empty or null"); } int sum = 0; for (int x : arr) { sum += x; } return (double) sum / arr.length; } } ``` 这段代码展示了如何利用循环结构来完成数组平均值的计算功能[^2]。 --- #### 3. **查找数组中的指定元素** 使用顺序查找法在一个整型数组中定位某个特定数值的位置。 ```java public class SearchElement { public static void main(String[] args) { int[] arr = {10, 20, 30, 40, 50}; int target = 30; int result = search(arr, target); if (result != -1) { System.out.println("Element found at index: " + result); } else { System.out.println("Element not found."); } } public static int search(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (arr[i] == target) { return i; } } return -1; } } ``` 上述程序演示了基本的线性搜索技术用于在数组中寻找目标项的方法。 --- #### 4. **找出数组中出现次数最多的元素** 采用投票算法(Boyer-Moore Majority Vote Algorithm),可以高效地确定数组中占多数的元素。 ```java public class MajorityElement { public static void main(String[] args) { int[] nums = {3, 2, 3, 1, 2, 2}; System.out.println("Majority Element: " + findMajority(nums)); } public static int findMajority(int[] nums) { int count = 0; Integer candidate = null; for (int num : nums) { if (count == 0) { candidate = num; } count += (candidate == num) ? 1 : -1; } return candidate; } } ``` 该解决方案基于一种高效的计数策略,适用于处理大规模数据集的情况[^4]。 --- #### 5. **向有序数组中插入新元素并保持其顺序** 当需要将一个新的数字加入已排序好的数组时,可以通过调整现有元素位置的方式维持原有的排列次序。 ```java import java.util.Arrays; public class InsertIntoSortedArray { public static void main(String[] args) { int[] arr = {1, 3, 4, 5, 7, 9, 0}; // Last element reserved as placeholder int valueToInsert = 6; insertAndSort(arr, valueToInsert); System.out.println(Arrays.toString(arr)); } private static void insertAndSort(int[] arr, int newValue) { int pos = arr.length - 1; while (pos >= 0 && arr[pos - 1] > newValue) { arr[pos] = arr[pos - 1]; pos--; } arr[pos] = newValue; } } ``` 这里提供了一种有效的方式来更新包含预留空间的固定大小数组的内容[^5]。 --- ### 总结 以上示例涵盖了多种常见的数组操作技巧,包括但不限于求最值、统计均值、检索特定条目以及执行高级分析任务等。每一段代码都经过精心设计以满足实际应用场景下的需求,并附带必要的错误检测逻辑确保健壮性和可靠性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值