案例一:减肥计划
/* 减肥计划 需求:输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿 思路: 1.键盘录入一个星期数,用一个变量接收 2.对星期数进行判断,这里用if/switch语句实现 3.在对应的语句控制中输出对应的减肥计划 导包: 1.手动导包: import java.util.Scanner; 2.快捷键导包:Alt+Enter 3.自动导包 */ import java.util.Scanner; public class Demo { public static void main(String[] args) { //键盘录入一个星期数,用一个变量接收 System.out.println("请录入一个星期数(1-7):"); Scanner sc = new Scanner(System.in); int day = sc.nextInt(); //对星期数进行判断,这里用if语句实现 if (day == 1) { System.out.println("跑步"); } else if (day == 2) { System.out.println("游泳"); } else if (day == 3) { System.out.println("慢走"); } else if (day == 4) { System.out.println("动感单车"); } else if (day == 5) { System.out.println("拳击"); } else if (day == 6) { System.out.println("爬山"); } else if (day == 7) { System.out.println("好好吃一顿"); } else { System.out.println("你输入的星期数有误"); } //对星期数进行判断,这里用switch语句实现 switch (day){ case 1: System.out.println("跑步"); break; case 2: System.out.println("游泳"); break; case 3: System.out.println("慢走"); break; case 4: System.out.println("动感单车"); break; case 5: System.out.println("拳击"); break; case 6: System.out.println("爬山"); break; case 7: System.out.println("好好吃一顿"); break; default: System.out.println("你输入的星期数有误"); } } }
案例二:逢七过
/* 逢七过 需求:朋友聚会的时候可能会玩一个游戏:逢七过。 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过. 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间满足逢七必过规则的数据。 思路: 1.数据在1-100之间,用for循环实现数据的获取 2.根据规则,用if语句实现数据的判断:要么各位是7,要么十位是7,要么能够被7整除 3.在控制台输出满足规则的数据 */ public class Demo { public static void main(String[] args) { //数据在1-100之间,用for循环实现数据的获取 for(int i = 1; i < 100; i++){ //根据规则,用if语句实现数据的判断:要么各位是7,要么十位是7,要么能够被7整除 if(i%10 == 7 || i/10%10 == 7 || i%7 == 0){ //在控制台输出满足规则的数据 System.out.println(x); } } } }
案例三:不死神兔
/* 不死神兔 需求:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少? 思路: 1.为了存储多个月的兔子对数,定义一个数组,用动态初始化完成数组元素的初始化,长度为20 2.因为第1个月,第二个月兔子的对数是已知的,都是1,所以数组的第1个元素,第2个元素值都是1 3.用循环实现计算每个月的兔子对数 4.输出数组中最后一个元素的值,就是第20个月的兔子对数 */ public class Demo { public static void main(String[] args) { //为了存储多个月的兔子对数,定义一个数组,用动态初始化完成数组元素的初始化,长度为20 int[] arr = new int[20]; //因为第1个月,第二个月兔子的对数是已知的,都是1,所以数组的第1个元素,第2个元素值都是1 arr[0] = 1; arr[1] = 1; //用循环实现计算每个月的兔子对数 for(int i = 2; i < 20; i++){ arr[i] = arr[i-2]+arr[i-1]; /* arr[2] = arr[0]+arr[1]; arr[3] = arr[1]+arr[2]; ... */ } //输出数组中最后一个元素的值,就是第20个月的兔子对数 System.out.println("第20个月的兔子对数是:"+arr[19]); } }
案例四:百钱白鸡
/* 百钱白鸡 需求:我国古代数学家张丘建宅《算经》一书中提出数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几只? 思路: 1.第一层循环,用于表示鸡翁的范围,初始化表达式的变量定义为x=0,判断条件是x<20 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 Demo { public static void main(String[] args) { //第一层循环,用于表示鸡翁的范围,初始化表达式的变量定义为x=0,判断条件是x<20 for (int x = 0; x <= 20; x++) { //第二层循环,用于表示鸡母的范围,初始化表达式的变量定义为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 Demo { 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); } }
案例六:数组内容相同
/* 数组内容相同 需求:设计一个方法,用于比较两个数组的内容是否相同 思路: 1.定义两个数组,分别使用静态初始化完成数组元素的初始化 2.定义一个方法,用于比较两个数组的内容是否相同 返回值:boolean 参数:int[] arr1, int[] arr2 3.比较两个数组的内容是否相同,按照下面的步骤实现就可以了 首先比较数组的长度,如果长度不相同,数据内容肯定不相同,返回false 其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false 最后循环遍历结束后,返回true 4.调用方法,用变量接收 5.输出结果 */ public class Demo { public static void main(String[] args) { //定义两个数组,分别使用静态初始化完成数组元素的初始化 int[] arr1 = {11,22,33,44,55,66}; int[] arr2 = {11,22,33,44,55,66}; //调用方法,用变量接收 boolean flag = compare(arr1,arr2); //输出结果 System.out.println(flag); } //定义一个方法,用于比较两个数组的内容是否相同 public static boolean compare(int[] arr1,int[] arr2){ //首先比较数组的长度,如果长度不相同,数据内容肯定不相同,返回false if(arr1.length != arr2.length){ return false; } //其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false for(int x=0; x<= arr1.length; x++){ if(arr1[x] != arr2[x]){ return false; } } //最后循环遍历结束后,返回true return true; } }
案例七:查找
import java.util.Scanner; /* 查找 需求:已知一个数组arr={19,28,37,46,50};键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出找到的索引值。 思路: 1.定义一个数组,使用静态初始化完成数组元素的初始化 2.键盘录入要查找的数据,用一个变量接收 3.定义一个索引变量,初始值为-1 4.遍历数组,获取到数组中的每一个元素 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 6.输出索引变量 */ public class Demo { 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 i = 0; i < arr.length; i++) { //拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 if (arr[i] == number) { index = i; break; } } return index; } }
案例八:反转
/* 反转 需求:已知一个数组arr={19,28,37,46,50};用程序实现把数组中的元素值交换, 交换后的数组arr={50,46,37,28,19};并在控制台输出交换后的数组元素。 思路: 1.定义一个数组arr,使用静态初始化完成数组元素的初始化 2.定义一个数组arr2,使用动态初始化完成初始化,长度为arr的长度 3.循环遍历数组arr2,获取到数组中的每一个元素 4.将数组arr的元素反序赋值给arr2 5.输出arr2 */ public class Demo { public static void main(String[] args) { //定义一个数组,使用静态初始化完成数组元素的初始化 int[] arr = {19, 28, 37, 46, 50}; //定义一个数组arr2,使用动态初始化完成初始化,长度为arr的长度 int[] arr2 = new int[arr.length]; System.out.print("["); //循环遍历数组arr2,获取到数组中的每一个元素 for (int i = 0; i < arr.length; i++) { //将数组arr的元素反序赋值给arr2 arr2[i] = arr[arr.length - 1 - i]; if(i == arr.length-1){ System.out.print(arr2[i]); } else { System.out.print(arr2[i] + ", "); } } System.out.print("]"); } }
案例九:评委打分
import java.util.Scanner; /* 评委打分 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后的4个评委平均值(不考虑小数部分)。 思路: 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 2.键盘录入评委分数 3.由于是6个评委打分,所以,接收评委分数的操作,用循环改进 4.定义方法实现获取数组中的最高分(数组中的最大值),调用方法 5.定义方法实现获取数组中的最低分(数组中的最小值),调用方法 6.定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法 7.按照计算规则进行计算得到平均分 8.输出平均分 */ public class Demo { public static void main(String[] args) { //定义一个数组,用动态初始化完成数组元素的初始化,长度为6 int[] arr = new int[6]; //键盘录入评委分数 Scanner sc = new Scanner(System.in); //由于是6个评委打分,所以,接收评委分数的操作,用循环改进 for (int i = 0; i<arr.length; i++) { System.out.println("请输入第"+i+"个评委的评分:"); arr[i] = sc.nextInt(); } //定义方法实现获取数组中的最高分(数组中的最大值),调用方法 int max = getMax(arr); //定义方法实现获取数组中的最低分(数组中的最小值),调用方法 int min = getMin(arr); //定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法 int sum = getSum(arr); //按照计算规则进行计算得到平均分 int avg = (sum-max-min)/(arr.length-2); //输出平均分 System.out.println("选手的最终平均分是:"+avg); } //定义方法实现获取数组中的最高分(数组中的最大值),调用方法 public static int getMax(int[] arr){ int max = arr[0]; for (int i = 1; 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 i = 1; i<arr.length;i++){ if(arr[i]<min){ min = arr[i]; } } return min; } //定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法 public static int getSum(int[] arr){ int sum = 0; for (int i = 0; i<arr.length;i++){ sum+=arr[i]; } return sum; } }