需求:
实现:
package com.app.demo10_array_practice;
/**
数组的练习
遍历数组并求和:
需求:定义一个数组,存储 1,2,3,4,5
遍历数组得到每一个元素,求数组里面所有的数据和
*/
public class ArrayDemo1 {
public static void main(String[] args) {
// 1、定义一个数组,存储12345
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = null;
int[] arr3 = {};
int[] arr4 = {2, 10, 3, 6};
// 2、调用数组元素求和的方法,传入一个数组,进行求和
int result1 = arrayElementsSum(arr1);
System.out.println(result1);
System.out.println(arrayElementsSum(arr2));
System.out.println(arrayElementsSum(arr3));
System.out.println(arrayElementsSum(arr4));
}
/**
* 3、数组元素求和的实现方法
* @param arr 接收一个数组
* @return 返回数组元素求和结果
*/
private static int arrayElementsSum(int[] arr) {
// 传入的数组不能为null
if (arr == null) {
return 0;
}
// 定义求和变量,用于累加每次遍历数组得到的元素值
int sum = 0;
// 遍历数组元素
for (int i = 0; i < arr.length; i++) {
// 每次得到数组的元素值,进行累加
sum += arr[i];
}
// 循环结束!说明求和完成。返回结果
return sum;
}
}
15
0
0
21
Process finished with exit code 0
需求:
实现:
package com.app.demo10_array_practice;
/**
数组的练习
统计个数:
需求:定义一个数组,存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素,统计数组里面一共有多少个能被3整除的数字
*/
public class ArrayDemo2 {
public static void main(String[] args) {
// 1、定义一个数组,存储1,2,3,4,5,6,7,8,9,10
int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr2 = null;
// 2、调用统计数组的方法,传入数组
int count = countArray(arr1);
System.out.println("arr1数组中能被3整除的数有:" + count + "个。");
System.out.println(countArray(arr2));
}
/**
* 3、统计数组里能被3整除的数字个数的实现方法
* @param arr 接收一个数组
* @return 返回能被3整除的数字统计结果
*/
private static int countArray(int[] arr) {
// 传入的数组不能为null
if (arr == null) {
return 0;
}
// 定义计数变量,用于记录能被3整除的数字个数
int count = 0;
// 遍历数组,得到每个元素
for (int i = 0; i < arr.length; i++) {
// 判断每次得到的数字是否能被3整除,否则继续循环判断
if (arr[i] % 3 == 0) {
// 能,统计个数
count++;
}
}
// 循环结束,说明统计完成,返回统计结果
return count;
}
}
arr1数组中能被3整除的数有:3个。
0
Process finished with exit code 0
需求:
实现:
package com.app.demo10_array_practice;
/**
数组的练习
变化数据:
需求:定义一个数组,存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素
如果是奇数,则将当前数字扩大两倍
如果是偶数,则将当前数字变成原来的二分之一
*/
public class ArrayDemo3 {
public static void main(String[] args) {
// 1、定义一个数组,存储1,2,3,4,5,6,7,8,9,10
int[] arr = {1,2,3,4,5,6,7,8,9,10};
// 2、调用变化数据的方法,传入数组
changeData(arr);
}
/**
* 3、变化数组数据的实现方法
* @param arr 接收一个数组
*/
private static void changeData(int[] arr) {
// 传入的数组不能为null
if (arr == null) {
System.out.println("参数不能为null");
return;
}
// 遍历数组,得到每一个元素
for (int i = 0; i < arr.length; i++) {
// 每遍历到一个数,就判断是否为奇数,否则为偶数
if (arr[i] % 2 == 1) {
// 是奇数,将该数扩大两倍
System.out.print("原" + arr[i] + "变成: " + (arr[i] * 2) + ", ");
}else{
// 是偶数,将该数变成原来的二分之一
System.out.println(
"原" + arr[i] + "变成: " + ( i == arr.length - 1 ? arr[i] / 2 : ((arr[i] / 2) + ", ") )
);
}
}
}
}
原1变成: 2, 原2变成: 1,
原3变成: 6, 原4变成: 2,
原5变成: 10, 原6变成: 3,
原7变成: 14, 原8变成: 4,
原9变成: 18, 原10变成: 5
Process finished with exit code 0
需求:
分析:
实现:
package com.app.demo10_array_practice;
/**
数组的练习
求最值:
需求:已知数组元素为: 33,5,22,44,55
请找出数组中最大值并打印在控制台
*/
public class ArrayDemo4 {
public static void main(String[] args) {
// 1、定义数组存储33,5,22,44,55
int[] arr1 = {33, 5, 22, 44, 55};
// 索引 0 1 2 3 4
// 2、调用求数组最大值的方法
int maxValue = arrayMaxElement(arr1);
System.out.println("arr1数组中的最大值是:" + maxValue);
int[] arr2 = {66, 2, 44, 99, 33, 44};
System.out.println("arr2数组中的最大值是:" + arrayMaxElement(arr2));
}
/**
* 3、求数组最大值的实现方法
* @param arr 接收一个数组
* @return 返回数组中的最大值
*/
private static int arrayMaxElement(int[] arr) {
// 传入的数组不能为null
if (arr == null) {
return 0;
}
// 取出数组中的首元素,用于与其他元素做比较,如果其他元素比这个元素大,就替换
int max = arr[0];
// 遍历数组,得到每一个元素
// i = 1: 直接从第二个元素开始比较,如果 i = 0: 还要自己和自己比,不符合逻辑
for (int i = 1; i < arr.length; i++) {
// 判断当前元素 是否大于 首元素
if (arr[i] > max) {
// 说明当前元素 大于 首元素,将当前元素 变成 首元素
max = arr[i];
}
// 如果没进入if判断,说明当前元素 小于 首元素,则继续遍历,继续判断
}
// 循环结束,说明已经比较完了!此时first里的值已经是数组中的最大值,返回最大值
return max;
}
}
arr1数组中的最大值是:55
arr2数组中的最大值是:99
Process finished with exit code 0
需求:
实现:
package com.app.demo10_array_practice;
/**
数组的练习
求最值:
1.求最大值
需求:已知数组元素为: 33,5,22,44,55
请找出数组中最大值并打印在控制台
2.求最小值
需求:已知数组元素为:66,2,44,99,33,44
请找出数组中最小值并打印在控制台
*/
public class ArrayDemo4 {
public static void main(String[] args) {
// 1、定义数组存储33,5,22,44,55
int[] arr1 = {33, 5, 22, 44, 55};
// 索引 0 1 2 3 4
// 2、调用求数组最大值的方法
int maxValue = arrayMaxElement(arr1);
System.out.println("arr1数组中的最大值是:" + maxValue);
int[] arr2 = {66, 2, 44, 99, 33, 44};
System.out.println("arr2数组中的最小值是:" + arrayMinElement(arr2));
}
/**
* 3、求数组最大值的实现方法
* @param arr 接收一个数组
* @return 返回数组中的最大值
*/
private static int arrayMaxElement(int[] arr) {
// 传入的数组不能为null
if (arr == null) {
return 0;
}
// 取出数组中的首元素,用于与其他元素做比较,如果其他元素比这个元素大,就替换
int max = arr[0];
// 遍历数组,得到每一个元素
// i = 1: 直接从第二个元素开始比较,如果 i = 0: 还要自己和自己比,不符合逻辑
for (int i = 1; i < arr.length; i++) {
// 判断当前元素 是否大于 首元素
if (arr[i] > max) {
// 说明当前元素 大于 首元素,将当前元素 变成 首元素
max = arr[i];
}
// 如果没进入if判断,说明当前元素 小于 首元素,则继续遍历,继续判断
}
// 循环结束,说明已经比较完了!此时max变量里的值已经是数组中的最大值,返回最大值
return max;
}
/**
* 4、求数组最小值的实现方法
* @param arr 接收一个数组
* @return 返回数组中的最小值
*/
private static int arrayMinElement(int[] arr) {
// 传入的数组不能为null
if (arr == null) {
return 0;
}
// 取出数组中的首元素,用于与其他元素做比较,如果其他元素比这个元素小,就替换
int min = arr[0];
// 遍历数组,得到每一个元素
// i = 1: 直接从第二个元素开始比较,如果 i = 0: 还要自己和自己比,不符合逻辑
for (int i = 1; i < arr.length; i++) {
// 判断当前元素 是否小于 首元素
if (arr[i] < min) {
// 说明当前元素 小于 首元素,将当前元素 变成 首元素
min = arr[i];
}
// 如果没进入if判断,说明当前元素 大于 首元素,则继续遍历,继续判断
}
// 循环结束,说明已经比较完了!此时min变量里的值已经是数组中的最小值,返回最小值
return min;
}
}
arr1数组中的最大值是:55
arr2数组中的最小值是:2
Process finished with exit code 0
需求:
分析:
实现:
package com.app.demo10_array_practice;
import java.util.Arrays;
import java.util.Random;
/**
数组的练习
求和并统计个数:
需求:生成10个1~100之间的随机数存入数组。
1、求出所有数据的和
2、求所有数据的平均数
3、统计有多少个数据比平均值小
*/
public class ArrayDemo5 {
public static void main(String[] args) {
// 1、定义一个长度为10的数组
int[] arr = new int[10];
// 2、创建随机数对象,用于生成一个随机数
Random rd = new Random();
// 3、动态生成10个1~100之间的随机数存入数组
for (int i = 0; i < arr.length; i++) {
// i = 0 1 2 3 4 5 6 7 8 9
// a.每循环一次,生成一个随机数
int number = rd.nextInt(100) + 1;
// b.将生成的随机数存入数组中
arr[i] = number;
}
// 4、看看数组中的元素
System.out.println("数组:" + Arrays.toString(arr));
// 5、调用求数组中所有数据和的方法
int sum = arrayElementSum(arr);
System.out.println("数组中所有数的和:" + sum);
// 6、调用求数组中所有数据的平均值的方法,传入一个数组、数组中所有数的和
int average = arrayElementAverage(arr, sum);
System.out.println("数组中所有数的平均数(只保留整数部分):" + average);
// 7、调用统计数组中比平均值小的数据的方法,传入一个数组、数组中所有数的平均值
int count = countArrayLessAverage(arr, average);
System.out.println("数组中比平均值小的数有" + count + "个~");
}
/**
* 统计数组中比平均值小的数据
* @param arr 接收一个数组
* @param average 数组中所有数的平均值
* @return 返回数组中比平均值小的数据的统计结果
*/
private static int countArrayLessAverage(int[] arr, int average) {
// 传入的数组如果为null或传入的平均值小于等于0,则返回-1
if (arr == null || average <= 0) {
return -1;
}
// 定义计数变量,用于记录比平均值小的数据的数量
int count = 0;
// 遍历数组,依次得到每一个元素
for (int i = 0; i < arr.length; i++) {
// 判断当前元素 是否比 平均值小
if (arr[i] < average) {
// 是,开始统计比平均值小的数的数量
count++;
}
}
// 循环结束,说明统计完成,返回统计结果
return count;
}
/**
* 求数组中所有数的平均值
* @param arr 接收一个数组
* @param sum 数组所有数的总和
* @return 返回数组中所有数的平均值
*/
private static int arrayElementAverage(int[] arr, int sum) {
// 传入的数组如果为null或传入的总和小于等于0,则返回-1
if (arr == null || sum <= 0) {
return -1;
}
// 定义变量,分别用于存储最大值、最小值、计算出来的平均值
int max = arr[0];
int min = arr[0];
// int sum = 0;
int average = 0;
// 遍历数组,依次得到每一个元素
for (int i = 0; i < arr.length; i++) {
// 求出最大值
if (arr[i] > max) {
max = arr[i];
}
// 求出最小值
if (arr[i] < min) {
min = arr[i];
}
// 求总和
// sum += arr[i];
}
// 循环结束,说明最大值和最小值已经求出来了
// 求平均值:(总和 - 最大值 - 最小值) / 长度-2
// System.out.println("最大值:" + max);
// System.out.println("最小值:" + min);
// System.out.println("总和:" + sum);
average = (sum - max - min) / (arr.length - 2);
return average;
}
/**
* 求数组中所有数的和
* @param arr 接收一个数组
* @return 返回数组中所有数的和
*/
private static int arrayElementSum(int[] arr) {
// 传入的数组如果为null,则返回0
if (arr == null) {
return 0;
}
// 定义求和变量,用于累加数组所有数据的和
int sum = 0;
// 遍历数组,依次得到每一个元素
for (int i = 0; i < arr.length; i++) {
// 将得到的每一个元素累加起来
sum += arr[i];
}
// 循环结束,累加完成,返回求和结果
return sum;
}
}
数组:[84, 41, 81, 84, 66, 43, 39, 79, 46, 24]
数组中所有数的和:587
数组中所有数的平均数(只保留整数部分):59
数组中比平均值小的数有5个~
Process finished with exit code 0
需求:
实现:
package com.app.demo10_array_practice;
import java.util.Arrays;
/**
数组的练习
交换数据:
需求:定义一个数组,存入1,2,3,4,5
按照要求交换索引对应的元素
交换前: 1,2,3,4,5
交换后: 5,4,3,2,1
*/
public class ArrayDemo6 {
public static void main(String[] args) {
// 1、定义一个数组,存入1,2,3,4,5
int[] arr = {1,2,3,4,5};
System.out.println("交换前:" + Arrays.toString(arr));
// 2、调用交换数据的方法,传入一个数组
int[] newArr = arraySwapData(arr);
System.out.println("交换后:" + Arrays.toString(newArr));
}
/**
* 数组中交换数据
* @param arr 接收一个数组
* @return 返回交换后的数组
*/
private static int[] arraySwapData(int[] arr) {
// 传入的数组如果为null
if (arr == null) {
System.out.println("您传入的参数不能为null!");
}else {
// 不为null
/**
for循环:
i: 代表首索引,此时 i=0,就是数组的首索引位置
j: 代表尾索引,此时 j=arr.length-1,就是数组的尾索引位置(数组的最后)
i < j: 只要首索引位置 小于 尾索引位置,代表数据还没有交换完,则继续交换;
当首索引位置 不小于 为索引位置时,则交换完毕,结束循环
i++: 首索引往前走
j--: 尾索引往回走
*/
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
// 得到当前元素,用临时变量存放起来
int temp = arr[i];
// 开始交换:
// 将后一位的元素 放到 当前位置
arr[i] = arr[j];
// 将当前元素 放到 后一位的位置
arr[j] = temp;
}
// 循环结束,说明数组中所有数据已交换完毕,返回交换后的数组
return arr;
}
return null;
}
}
交换前:[1, 2, 3, 4, 5]
交换后:[5, 4, 3, 2, 1]
Process finished with exit code 0
需求:
实现:
package com.app.demo10_array_practice;
import java.util.Arrays;
import java.util.Random;
/**
数组的练习
打乱数据:
需求:定义一个数组,存入1~5
要求打乱数组中所有数据的顺序
*/
public class ArrayDemo7 {
public static void main(String[] args) {
// 1、定义一个数组,存入1~5
int[] numbers = {1, 2, 3, 4, 5};
// 索引 0 1 2 3 4
System.out.println("打乱前:" + Arrays.toString(numbers));
// 2、创建随机数对象,用于生成一个随机索引
Random rd = new Random();
// 3、遍历数组,得到每个元素
for (int i = 0; i < numbers.length; i++) {
// 每遍历到一个元素,就生成一个与数组长度一样的(1~5)的随机索引
int index = rd.nextInt(numbers.length);
// 用临时变量将遍历到的当前元素存储起来
int temp = numbers[i];
// 开始交换位置:
// 随机索引位置的元素 放到 当前索引位置
numbers[i] = numbers[index];
// 当前索引位置的元素 放到 随机索引位置
numbers[index] = temp;
}
// 4、循环结束,说明所有数据已全部打乱,打印数组内容
System.out.println("打乱后:" + Arrays.toString(numbers));
}
}
打乱前:[1, 2, 3, 4, 5]
打乱后:[2, 5, 4, 3, 1]
Process finished with exit code 0
打乱前:[1, 2, 3, 4, 5]
打乱后:[1, 3, 4, 5, 2]
Process finished with exit code 0
打乱前:[1, 2, 3, 4, 5]
打乱后:[5, 1, 3, 2, 4]
Process finished with exit code 0