百钱白鸡
案例需求
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
代码实现
/* 思路: 1:第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x=0,判断条件是x<=20 2:第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y=0,判断条件是y<=33 3:这个时候,用于表示鸡雏的变量 z = 100 – x – y 4:判断表达式 z%3==0 和表达式 5*x + 3*y + z/3 = 100 是否同时成立,如果成立,输出对应的 x,y,z 的值,就是对应的鸡翁,鸡母,鸡雏的值 */ public class Test05 { public static void main(String[] args) { //第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x=0,判断条件是x<=20 for(int x=0; x<=20; x++) { //第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y=0,判断条件是y<=33 for(int y=0; y<=33; y++) { //这个时候,用于表示鸡雏的变量 z = 100 – x – y int z = 100 - x - y; //判断表达式 z%3==0 和表达式 5*x + 3*y + z/3 = 100 是否同时成立 if(z%3==0 && 5*x+3*y+z/3==100) { System.out.println(x+","+y+","+z); } } } } }
数组元素求和
案例需求
有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数
代码实现
/* 思路: 1:定义一个数组,用静态初始化完成数组元素的初始化 2:定义一个求和变量,初始值是0 3:遍历数组,获取到数组中的每一个元素 4:判断该元素是否满足条件,如果满足条件就累加 5:输出求和变量的值 */ public class Test06 { public static void main(String[] args) { //定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {68, 27, 95, 88, 171, 996, 51, 210}; //定义一个求和变量,初始值是0 int sum = 0; //遍历数组,获取到数组中的每一个元素 for(int x=0; x<arr.length; x++) { //判断该元素是否满足条件,如果满足条件就累加 if(arr[x]%10!=7 && arr[x]/10%10!=7 && arr[x]%2==0) { sum += arr[x]; } } //输出求和变量的值 System.out.println("sum:" + sum); } }
查找元素在数组中出现的索引位置
案例需求
已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引。 并在控制台输出找到的索引值。如果没有查找到,则输出-1
代码实现
/* 思路: 1:定义一个数组,用静态初始化完成数组元素的初始化 2:键盘录入要查找的数据,用一个变量接收 3:定义一个索引变量,初始值为-1 4:遍历数组,获取到数组中的每一个元素 5:拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 6:输出索引变量 */ public class Test08 { public static void main(String[] args) { //定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {19, 28, 37, 46, 50}; //键盘录入要查找的数据,用一个变量接收 Scanner sc = new Scanner(System.in); System.out.println("请输入要查找的数据:"); int number = sc.nextInt(); //调用方法 int index = getIndex(arr, number); //输出索引变量 System.out.println("index: " + index); } //查找指定的数据在数组中的索引 /* 两个明确: 返回值类型:int 参数:int[] arr, int number */ public static int getIndex(int[] arr, int number) { //定义一个索引变量,初始值为-1 int index = -1; //遍历数组,获取到数组中的每一个元素 for(int x=0; x<arr.length; x++) { //拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 if(arr[x] == number) { index = x; break; } } //返回索引 return index; } }
数组元素反转
案例需求
已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换, 交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。
代码实现
/* 思路: 1:定义一个数组,用静态初始化完成数组元素的初始化 2:循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引 3:变量交换 4:遍历数组 */ public class Test09 { public static void main(String[] args) { //定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {19, 28, 37, 46, 50}; //调用反转的方法 reverse(arr); //遍历数组 printArray(arr); } /* 两个明确: 返回值类型:void 参数:int[] arr */ public static void reverse(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; } } /* 两个明确: 返回值类型:void 参数:int[] arr */ 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("]"); } }
评委打分
案例需求
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
代码实现
/* 思路: 1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6 2:键盘录入评委分数 3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进 4:定义方法实现获取数组中的最高分(数组最大值),调用方法 5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法 6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法 7:按照计算规则进行计算得到平均分 8:输出平均分 */ public class Test10 { public static void main(String[] args) { //定义一个数组,用动态初始化完成数组元素的初始化,长度为6 int[] arr = new int[6]; //键盘录入评委分数 Scanner sc = new Scanner(System.in); //由于是6个评委打分,所以,接收评委分数的操作,用循环改进 for(int x=0; x<arr.length; x++) { System.out.println("请输入第" + (x + 1) + "个评委的打分:"); arr[x] = sc.nextInt(); } //printArray(arr); //定义方法实现获取数组中的最高分(数组最大值),调用方法 int max = getMax(arr); //定义方法实现获取数组中的最低分(数组最小值) ,调用方法 int min = getMin(arr); //定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法 int sum = getSum(arr); //按照计算规则进行计算得到平均分 int avg = (sum - max - min) / (arr.length - 2); //输出平均分 System.out.println("选手的最终得分是:" + avg); } /* 两个明确: 返回值类型:int 参数:int[] arr */ public static int getSum(int[] arr) { int sum = 0; for(int x=0; x<arr.length; x++) { sum += arr[x]; } return sum; } /* 两个明确: 返回值类型:int 参数:int[] arr */ public static int getMin(int[] arr) { int min = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] < min) { min = arr[x]; } } return min; } /* 两个明确: 返回值类型:int 参数:int[] arr */ public static int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } return max; } //遍历数组 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("]"); } }