|
第六天 知识点练习与回顾【悟空教程】185
发表时间:2018-08-18 17:42 第六天 知识点练习与回顾【悟空教程】 第06天 知识点练习与回顾第1章 练习1.1.1 看循环的执行流程
public class Demo02DebugTest { public static void main(String[] args) { // 定义求和变量 int sum = 0; // 循环获取每一个数据 for (int x = 1; x <= 5; x++) { sum += x; } System.out.println("sum:" + sum); } } 1.1.2 看方法的调用流程
public class Demo03DebugTest { public static void main(String[] args) { // 创建对象 Scanner sc = new Scanner(System.in); // 接收数据d System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); // 调用方法 int result = sum(a, b); // 输出结果 System.out.println("result:" + result); } // 求和方法 public static int sum(int a, int b) { return a + b; } } 1.1.3 看方法参数传递案例执行流程
public class Demo04DebugTest { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:" + a + ",b:" + b); change(a, b); System.out.println("a:" + a + ",b:" + b);
} public static void change(int a, int b) { System.out.println("a:" + a + ",b:" + b); a = b; b = a + b; System.out.println("a:" + a + ",b:" + b); } }
public class Demo05DebugTest { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; for (int x = 0; x < arr.length; x++) { System.out.println(arr[x]); } System.out.println("-----------调用change------------"); change(arr); for (int x = 0; x < arr.length; x++) { System.out.println(arr[x]); } } public static void change(int[] arr) { for (int x = 0; x < arr.length; x++) { if (arr[x] % 2 == 0) { arr[x] *= 2; } } } } 第2章 强化训练2.1 键盘录入月份,输出对应的季节
一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季
public class Demo01Test { public static void main(String[] args) { // 键盘录入一个月份,用Scanner实现 Scanner sc = new Scanner(System.in); // 接收数据 System.out.println("请输入一个月份(1-12):"); int month = sc.nextInt(); // 判断该月份是几月,根据月份输出对应的季节 /* if (month == 1) { System.out.println("冬季"); } else if (month == 2) { System.out.println("冬季"); } else if (month == 3) { System.out.println("春季"); } else if (month == 4) { System.out.println("春季"); } else if (month == 5) { System.out.println("春季"); } else if (month == 6) { System.out.println("夏季"); } else if (month == 7) { System.out.println("夏季"); } else if (month == 8) { System.out.println("夏季"); } else if (month == 9) { System.out.println("秋季"); } else if (month == 10) { System.out.println("秋季"); } else if (month == 11) { System.out.println("秋季"); } else if (month == 12) { System.out.println("冬季"); } else { System.out.println("你输入的月份有误"); } */ //代码太长了,能不能简单一些呢? //能,如何简单一些呢? //我们可以把相同季节的月份放到一起来判断 //(month==3 || month==4 || month==5) if(month==1 || month==2 || month==12) { System.out.println("冬季"); }else if(month==3 || month==4 || month==5) { System.out.println("春季"); }else if(month==6 || month==7|| month==8) { System.out.println("夏季"); }else if(month==9 || month==10 || month==11) { System.out.println("秋季"); }else { System.out.println("你输入的月份有误"); } } }
public class Demo02Test { public static void main(String[] args) { // 键盘录入一个月份,用Scanner实现 Scanner sc = new Scanner(System.in); // 接收数据 System.out.println("请输入月份(1-12):"); int month = sc.nextInt(); // 用switch语句实现 switch (month) { 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; case 8: System.out.println("夏季"); break; case 9: System.out.println("秋季"); break; case 10: System.out.println("秋季"); break; case 11: System.out.println("秋季"); break; case 12: System.out.println("冬季"); break; default: System.out.println("你输入的月份有误"); break; } } }
public class Demo02Test{ public static void main(String[] args) { // 键盘录入一个月份,用Scanner实现 Scanner sc = new Scanner(System.in); // 接收数据 System.out.println("请输入月份(1-12):"); int month = sc.nextInt(); //case 穿透 switch(month) { case 1: System.out.println("hello"); //break; case 2: System.out.println("world"); break; default: System.out.println("over"); break; } } }
public class Demo02Test { public static void main(String[] args) { // 键盘录入一个月份,用Scanner实现 Scanner sc = new Scanner(System.in); // 接收数据 System.out.println("请输入月份(1-12):"); int month = sc.nextInt(); //通过case穿透现象改进代码 switch(month) { case 1: case 2: case 12: System.out.println("冬季"); break; case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; default: System.out.println("你输入的月份有误"); break; } } } 2.2 打印5位数中所有的回文数
什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。 public class Demo03Test { public static void main(String[] args) { //5位数告诉了我们数据的范围,用for循环实现 for(int x=10000; x<100000; x++) { //获取每一个5位数,然后得到它的个位,十位,千位,万位 int ge = x%10; int shi = x/10%10; int qian = x/10/10/10%10; int wan = x/10/10/10/10%10; //把满足条件的数据输出即可 if((ge==wan) && (shi==qian)) { System.out.println(x); } } } } 2.3 不死神兔问题(斐波那契数列)
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少? public class Demo04Test { public static void main(String[] args) { //定义数组 int[] arr = new int[20]; //初始化第一个月和第二个月的兔子对数 arr[0] = 1; arr[1] = 1; //从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和 for(int x=2; x<arr.length; x++) { arr[x] = arr[x-2] + arr[x-1]; } System.out.println("第二十个月的时候的兔子对数是:"+arr[19]); } } 2.4 求数组中满足要求的元素和
(1)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18} (2)求出该数组中满足要求的元素和。 (3)求和的元素的个位和十位不能包含7,并且只能为偶数。 public class Demo05Test { public static void main(String[] args) { //定义一个int类型的一维数组 int[] arr = {171,72,19,16,118,51,210,7,18}; //定义一个求和变量 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); } } 2.5 裁判评分
(1)在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 (2)选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。 (3)请写代码实现。(不考虑小数部分) public class Demo06Test { public static void main(String[] args) { //定义一个长度为6的数组 int[] arr = new int[6]; //通过键盘录入的方式给出评委的分数 Scanner sc = new Scanner(System.in); for(int x=0; x<arr.length; x++) { System.out.println("请给出第"+(x+1)+"个评委的分数(0-100):"); /*int number = sc.nextInt(); arr[x] = number;*/ arr[x] = sc.nextInt(); } //写方法实现获取数组中的最大值,最小值 int max = getMax(arr); int min = getMin(arr); //写方法实现数组元素的求和 int sum = sum(arr); //(和-最高分-最低分)/(arr.length-2) int avg = (sum-max-min)/(arr.length-2); //输出分数即可 System.out.println("该选手的最终得分是:"+avg); } //数组元素求和 public static int sum(int[] arr) { int sum = 0; for(int x=0; x<arr.length; x++) { sum += arr[x]; } return sum; } //数组中的最小值 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; } //数组中的最大值 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; } } 2.6 数组元素反转
(1)键盘录入5个int类型的数据存储数组arr中 (2)定义方法将arr数组中的内容反转 (3)定义方法对反转后的数组进行遍历
public class Demo07Test { public static void main(String[] args) { // 定义一个长度为5的数组 int[] arr = new int[5];
// 通过键盘录入数据给数组中的元素赋值 Scanner sc = new Scanner(System.in); for (int x = 0; x < arr.length; x++) { System.out.println("请给出第" + (x + 1) + "个元素"); arr[x] = sc.nextInt(); } System.out.println("反转前的数组元素:"); printArray(arr);
// 定义方法将arr数组中的内容反转 reverse(arr); System.out.println("反转后的数组元素:"); //定义方法遍历数组 printArray(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.println(arr[x]+"]"); }else { System.out.print(arr[x]+", "); } } } /* * 两个明确: 返回值类型:void 参数列表:int[] arr */ public static void reverse(int[] arr) { /* 利用for循环遍历数组 初始化表达式定义两个指针,记录第一个元素和最后一个元素:int min = 0,max = arr.length-1; 布尔表达式:min<max; 步进表达式:min++,max--; */ for(int min=0,max=arr.length-1;min<=max;min++,max--) { //利用第三方变量完成数组中的元素交换 int temp = arr[min]; arr[min] = arr[max]; arr[max] = temp; } } } 2.7 数组元素基本查找
(1)给定数组int[] arr = {5,7,3,2,5}; (2)要查询的元素通过键盘录入的方式确定 (3)定义一个查找数组元素第一次出现位置的方法(注,要查找的元素就是键盘录入的数据) public class Demo08Test { public static void main(String[] args) { // 给定数组int[] arr = {5,7,3,2,5}; int[] arr = { 5, 7, 3, 2, 5 }; //要查询的元素通过键盘录入的方式确定 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 value */ public static int getIndex(int[] arr,int value) { //遍历数组,获取到每一个元素和要查找的元素进行比较, /* for(int x=0; x<arr.length; x++) { if(arr[x] == value) { //如果相等,就直接把该处的索引返回。 return x; } } //遍历完毕,没有相等的返回-1。 return -1; */ int index = -1; for(int x=0; x<arr.length; x++) { if(arr[x] == value) { index = x; break; } } return index; } } 2.8 数据加密
(1)每位数字都加上5,然后除以10的余数代替该数字, (2)再将第一位和第四位交换,第二位和第三位交换, (3)请把加密后的数据输出到控制台 public class Demo09Test { public static void main(String[] args) { //键盘录入一个四位数 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请输入一个四位数:"); int number = sc.nextInt(); //分别得到该数据的每一个位上的数据 int ge = number%10; int shi = number/10%10; int bai = number/10/10%10; int qian = number/10/10/10%10; //定义一个数组 int[] arr = new int[4]; arr[0] = qian; arr[1] = bai; arr[2] = shi; arr[3] = ge; //遍历数组进行加密 for(int x=0; x<arr.length; x++) { //加密规则 //每位数字都加上5,然后除以10的余数代替该数字 arr[x] += 5; arr[x] %= 10; } //再将第一位和第四位交换,第二位和第三位交换 int temp = arr[0]; arr[0] = arr[3]; arr[3] = temp; temp = arr[1]; arr[1] = arr[2]; arr[2] = temp; //输出加密后的数据 for(int x=0; x<arr.length; x++) { System.out.print(arr[x]); } System.out.println(); } } 第3章 知识点相关题3.1 定义一个方法,可以计算一个int数组所有元素的奇数累加和、偶数累加和的差值;将结果返回;要求结果为正数;public class Test01 { public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7,8,9,10}; int num = getNum(arr); System.out.println("数组中奇偶数和之差为:"+num); }
private static int getNum(int[] arr) { int jSum = 0; int oSum = 0; for (int i = 0; i < arr.length; i++) { if(arr[i] % 2 == 0){ oSum += arr[i]; }else{ jSum += arr[i]; } } if(oSum > jSum) return oSum-jSum; else return jSum - oSum; } }
3.2 接收一个字符串类型的数组,返回该数组中第2个元素,如果数组长度小于2,就返回”对不起,没有这个人”public class Test02 { public static void main(String[] args) { String[] str= {"Java","C++","前端移动","UI"}; String string = getS(str); System.out.println(string); }
private static String getS(String[] str) { if(str.length < 2) return "对不起,没有这个人"; else return str[1]; } } 3.3 现在有如下的一个数组:int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} 要求定义一个方法将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5}最后遍历两个数组public class Test03 { public static void main(String[] args) { int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; getArr(oldArr); }
private static void getArr(int[] oldArr) { int len = 0; for (int i = 0; i < oldArr.length; i++) { if(oldArr[i] != 0){ len++; } } System.out.println(len); int[] arr = new int[len]; int index = 0; for (int i = 0; i < oldArr.length; i++) { if(oldArr[i] != 0){ arr[index] = oldArr[i]; index++; } } for (int i = 0; i < oldArr.length; i++) { System.out.print(oldArr[i]); } System.out.println(); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); } } } 3.4 定义一个方法传入一个5-10之间的随机数,根据传入的随机数创建数组,并向该数组再次存入5-10之间的几个随机元素。最后返回该数组并遍历import java.util.Random;
public class Test04 { public static void main(String[] args) { Random r = new Random(); int num = r.nextInt(6)+5; int [] arr = getArr(num); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } }
private static int[] getArr(int num) { Random r = new Random(); int[] arr = new int[num]; for (int i = 0; i < arr.length; i++) { arr[i] = r.nextInt(6)+5; } return arr; } }
3.5 编写一个方法,实现如下功能:遍历数组并打印,要求打印格式为[11, 22, 33, 44, 55]。在主方法里定义数组{11,22,33,44,55},调用方法遍历数组。
public class Test05 { public static void main(String[] args) { int[] arr = {11,22,33,44,55}; printArr(arr); }
private 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]+"}"); } } } } 第4章 代码题4.1 定义一个方法:接收一个int数组,将数组中所有偶数放入到一个新数组中并返回答案:
4.2 定义方法,实现查找数组中间值的功能,中间值有一个,就打印一个;中间值有两个,则打印两个。public class Demo05 { public static void main(String[] args) { int[] arr = {1,3,4,5,6,7,4,9}; int[] arr2 = {24,45,56,67,78,89,89}; int[] a = getModdle(arr); int[] b = getModdle(arr2); System.out.println("数组arr2中间值为:"); for (int i = 0; i < b.length; i++) { System.out.print(b[i]+" "); } System.out.println(); System.out.println("数组arr中间值为:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } }
private static int[] getModdle(int[] arr) { int count = arr.length; if(count % 2 == 0){ int[] array = {arr[arr.length / 2],arr[arr.length / 2 - 1]}; return array; }else{ int[] array = {arr[arr.length / 2]}; return array; } } } 4.3 1.返回一个存储10个4位数的随机整数 1000-9999的数组(注意思考怎么产生一个4位的随机整数)(不能重复)2.在方法中遍历这个随机数数组import java.util.Random; public class Demo{ public static void main(String[] args){ int[] arr = method(); for(int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } } public static int[] method(){ Random r = new Random(); int[] arr = new int[10]; int i = 0; while(i < 10){ int num = r.nextInt(9000)+1000; for(int j = 0 ; j < arr.length; j++){ if(num == arr[i]){ break; } } arr[i]=num; i++; } return arr; } }
文章分类:
Java
|