1.生成两个1-10的随机数,分别作为两个数组的长度.
2.向第一个数组中以循环键盘录入的方式添加元素
3.生成1-100之间的随机数 为第二个数组的每个元素赋值
4.将两个数组合并 为一个新的数组
5.去掉新数组的最大值和最小值 求平均值
package practise.day04.p1;
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Random r = new Random();
//随机生成一个1-10之间的整数,为数组arr的长度赋值
int length = r.nextInt(10)+1;
int [] arr = new int[length];
Scanner sc =new Scanner(System.in);
//键盘录入数组arr的元素
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第"+i+"个元素");
arr [i] = sc.nextInt();
}
//为数组arr2的长度赋值
int length2 = r.nextInt(10)+1;
int [] arr2 = new int[length2];
for (int i = 0; i < arr2.length; i++) {
//生成1-100之间的整数为arr2的每个元素赋值
arr2[i] = r.nextInt(100)+1;
}
//将两个数组合并 为一个新的数组
int[] arr3 = new int[arr.length+arr2.length];
for (int i = 0; i < arr.length; i++) {
arr3[i] = arr[i];
}
for (int i = 0; i < arr2.length; i++) {
//这里不太懂 debug看一下
arr3[i+arr.length] = arr2[i];
}
//求最大值
int max = arr3[0];
for (int i = 0; i < arr3.length; i++) {
if (arr3[i]>max){
max = arr3[i];
}
}
System.out.println("最大值是:"+max);
//求最小值
int min = arr3[0];
for (int i = 0; i < arr3.length; i++) {
if (arr3[i]<min){
min = arr3[i];
}
}
System.out.println("最小值是:"+min);
//求平均值 先求和 再去掉最大值和最小值
int sum = 0;
for (int i = 0; i < arr3.length; i++) {
sum += arr3[i];
}
System.out.println("和是:"+ sum);
//求平均值
System.out.println("平均值是:"+(sum - max -min)/(arr3.length-2));
}
}
1.数组元素求平均值
案例需求
随机生成10个1-10之间的数(包括1和10),将生成的数放到数组中,计算数组中索引为奇数的元素平均值,并将结果打印到控制台上
代码实现
package practise.day05;
import java.util.Random;
/*
随机生成10个1-10之间的数(包括1和10),将生成的数放到数组中
计算数组中索引为奇数的元素平均值,并将结果打印到控制台上
*/
public class practice {
public static void main(String[] args) {
Random r = new Random();
int []arr= new int[10];
int sum = 0;
int count = 0;
//将随机生成的数添加到数组中
for (int i = 0; i < arr.length; i++) {
int a = r.nextInt(10)+1;
arr[i] = a;
}
for (int i = 0; i < arr.length; i++) {
if (i % 2 == 1){
sum +=arr[i];
count++;
}
}
System.out.println("平均值是"+(sum/count));
}
}
2. 数组元素求和
-
案例需求
有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数
-
思路
1:定义一个数组,用静态初始化完成数组元素的初始化 2:定义一个求和变量,初始值是0 3:遍历数组,获取到数组中的每一个元素 4:判断该元素是否满足条件,如果满足条件就累加 5:输出求和变量的值
-
代码实现
-
package practise.day05; /* 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数 1:定义一个数组,用静态初始化完成数组元素的初始化 2:定义一个求和变量,初始值是0 3:遍历数组,获取到数组中的每一个元素 4:判断该元素是否满足条件,如果满足条件就累加 5:输出求和变量的值 */ public class practice01{ public static void main(String[] args) { int[] arr = {68,27,95,88,171,996,51,210}; int sum = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] % 10!=7 && arr[i] /10 % 10 != 7 && arr[i] % 2== 0){ sum +=arr[i]; } } System.out.println(sum); } }
3.判断两个数组是否相同
-
案例需求
定义一个方法,用于比较两个数组的内容是否相同
- 思路
1:定义两个数组,分别使用静态初始化完成数组元素的初始化
2:定义一个方法,用于比较两个数组的内容是否相同
3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了
首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false
最后循环遍历结束后,返回true4:调用方法,用变量接收
5:输出结果
-
代码实现
package practise.day05; /* - 案例需求 定义一个方法,用于比较两个数组的内容是否相同 - 思路 1:定义两个数组,分别使用静态初始化完成数组元素的初始化 2:定义一个方法,用于比较两个数组的内容是否相同 3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了 首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false 其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false 最后循环遍历结束后,返回true 4:调用方法,用变量接收 5:输出结果 */ public class practice02 { public static void main(String[] args) { //定义两个数组 int[]arr = {2,3,5,6,8,10,99}; int[]arr2 = {6,7,8,9,11,22,33,66,88}; //调用方法 boolean b = compare(arr,arr2); System.out.println(b); } //定义一个方法 先判断两个数组的长度是否相同 遍历两个数组判断内容是否相同 // 如果都相同则返回true public static boolean compare(int[]arr,int[]arr2){ if (arr.length!=arr2.length){ return false; } for (int i = 0; i < arr.length; i++) { if (arr[i] !=arr2[i]){ return false; } } return true; } }
4. 查找元素在数组中出现的索引位置
-
案例需求
已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。
并在控制台输出找到的索引值。如果没有查找到,则输出-1
-
代码实现
package practise.day05; import java.util.Scanner; /* - 案例需求 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。 并在控制台输出找到的索引值。如果没有查找到,则输出-1 - 代码实现 */ public class practice04 { public static void main(String[] args) { int[] arr = {19, 28, 37, 46, 50}; Scanner sc = new Scanner(System.in); System.out.println("请输入数字"); int a = sc.nextInt(); method(arr, a); } private static void method(int[]arr,int a){ int index = 0; for (int i = 0; i < arr.length; i++) { if (arr[i]==a){ System.out.println(i); index ++; } } if (index == 0){ System.out.println(-1); } } }
5. 数组元素反转
-
案例需求
已知一个数组 arr = {1, 2, 3, 4, 5}; 用程序实现把数组中的元素值交换, 交换后的数组 arr = {5, 4, 3, 2, 1}; 并在控制台输出交换后的数组元素。
-
思路
1:定义一个数组,用静态初始化完成数组元素的初始化 2:循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引 3:变量交换 4:遍历数组
-
代码实现
package practise.day05; /* - 已知一个数组 arr = {1, 2, 3, 4, 5}; 用程序实现把数组中的元素值交换, 交换后的数组 arr = {5, 4, 3, 2, 1}; 并在控制台输出交换后的数组元素。 - 图解 */ public class practice05 { public static void main(String[] args) { //定义一个数组,用静态初始化完成数组元素的初始化 int []arr = {1,2,3,4,5}; fanzhuan(arr); printArray(arr); } public static void fanzhuan(int[]arr){ //循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引 for (int start = 0,end = arr.length-1; start <=end ; start++,end--) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } } public static void printArray(int[] arr) { // 这是练习提供的方法 // System.out.print("["); // // for (int x = 0; x < arr.length; x++) { // if (x == arr.length - 1) { // System.out.print(arr[x]); // } else { // System.out.print(arr[x] + ", "); // } // } // // System.out.println("]"); for (int i = 0; i < arr.length; i++) { int a = arr[i]; System.out.print(a+" "); } } }
6. 评委打分
-
案例需求
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
-
思路
1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6 2:键盘录入评委分数 3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进 4:定义方法实现获取数组中的最高分(数组最大值),调用方法 5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法 6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法 7:按照计算规则进行计算得到平均分 8:输出平均分
-
代码实现
package practise.day05;
import java.util.Scanner;
/*
- 在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
- 思路
1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6
2:键盘录入评委分数
3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进
4:定义方法实现获取数组中的最高分(数组最大值),调用方法
5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法
6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法
7:按照计算规则进行计算得到平均分
8:输出平均分
*/
public class practice06 {
public static void main(String[] args) {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "个评委的打分");
arr[i] = sc.nextInt();
}
printArray( arr);
System.out.println("最高分是:");
System.out.println(getMax(arr));
System.out.print("最低分是");
System.out.println(getMin(arr));
System.out.print("总分数是:");
System.out.println(getSum(arr));
System.out.println("去掉一个最高分"+getMax(arr)+"去掉一个最低分"+getMin(arr));
int sum = getSum(arr);
int min = getMin(arr);
int max = getMax(arr);
int pingJunShun = (sum - min -max )/(arr.length-2);
System.out.println("平均得分是"+pingJunShun);
}
public static int getMax(int[] arr) {
int max =arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
}
return max;
}
public static int getMin(int[]arr){
int min = arr[0];
for (int x = 0; x < arr.length; x++) {
if (arr[x]<min){
min = arr[x];
}
}
return min;
}
public static int getSum (int[]arr){
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
//遍历数组 查看分数 不需要返回值 用void
public static void printArray(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] + ",");
}
}
System.out.print("]");
}
}
案例介绍
随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息。
我们来完成随机点名器,它具备以下3个内容:
1. 存储所有同学姓名
2. 总览全班同学姓名
3. 随机点名其中一人,打印到控制台
案例需求分析
全班同学中随机的找出一名同学,打印这名同学的个人信息。
我们对本案例进行分析,得出如下分析结果:
1.存储全班同学信息(姓名、年龄)
2.打印全班同学每一个人的信息(姓名、年龄)
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学信息(姓名、年龄)
随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,我们可以针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。
而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们采用ArrayList集合来解决多个学生信息的存储问题。
先对学生信息进行封装,新建一个Student类
package practise.day06;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student{name = " + name + ", age = " + age + "}";
}
}
package practise.day06;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/*
全班同学中随机的找出一名同学,打印这名同学的个人信息。
我们对本案例进行分析,得出如下分析结果:
1.存储全班同学信息(姓名、年龄)
2.打印全班同学每一个人的信息(姓名、年龄)
3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学信息(姓名、年龄)
随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起,则代码相对冗长,
我们可以针对不同的功能可以将其封装到一个方法中,将完整独立的功能分离出来。
而在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,
则会出现过多孤立的变量,很难一次性将全部数据持有。此时,我们采用ArrayList集合来解决多个学生信息的存储问题。
*/
public class practice01 {
public static void main(String[] args) {
ArrayList<Student>list = new ArrayList<>();
addStudent(list);
show(list);
randomStudent(list);
}
public static void addStudent(ArrayList<Student>list){
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
Student s = new Student();
s.setName(sc.next());
s.setAge(sc.nextInt());
list.add(s);
System.out.println("第"+(i+1)+"个输完了");
}
}
public static void show(ArrayList<Student>list){
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.toString());
}
}
public static void randomStudent(ArrayList<Student>list){
int index = new Random().nextInt(list.size());//这里的定义有点忘了 完了看看视频
Student s = list.get(index);
System.out.println("幸运儿是"+s.toString());
}
}