Java基础-day06-知识点回顾与练习

时间:2022-05-04
本文章向大家介绍Java基础-day06-知识点回顾与练习,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Java基础-day06-知识点回顾与练习

1.求和案例

实现代码:

package StudentJavaSEday06;
public class Demo {
 public static void main(String[] args) {
 // 定义求和变量
 int sum = 0;
 // 循环获取每一个数据
 for (int x = 1; x <= 5; x++) {
 sum += x;
 }
 System.out.println("sum:" + sum);
 }
}

运行结果:

2.求和方法调用

代码实现:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo2 {
 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);
 }
 // 求和方法
 public static int sum(int a, int b) {
 return a + b;
 }
}

运行结果:

3.看方法参数传递案例执行流程

(1)参数是基本类型: 形式参数的改变不影响实际参数

实现代码:

package StudentJavaSEday06;
//参数是基本类型: 形式参数的改变不影响实际参数。
public class Demo3 {
 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);
 }
}

运行结果:

(2)参数是引用类型: 形式参数的改变直接影响实际参数。

实现代码:
package StudentJavaSEday06;
//参数是引用类型: 形式参数的改变直接影响实际参数。
public class Demo4 {
 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;
 }
 }
 }
}

运行结果:

4.键盘录入月份,输出对应的季节

(1)if语句实现

实现代码:
package StudentJavaSEday06;
import java.util.Scanner;
/**
 * 需求: 一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季 
 * 使用if语句实现
 * 
 * @author 奋斗蒙
 */
public class Demo5 {
 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("你输入的月份有误");
 }
 }
}

运行结果:

(2)switch语句实现

普通switch语句实现

实现代码:

package StudentJavaSEday06;
import java.util.Scanner;
/**
 * 使用switch语句实现
 * 普通switch方式代码实现
 */
public class Demo6 {
 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;
 }
 }
}

运行结果:

case穿透改进:

实现代码:

package StudentJavaSEday06;
import java.util.Scanner;
//通过case穿透改进
public class Demo7 {
 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;
 }
 }
}

运行结果:

5.打印5位数的回文数

什么是回文数呢?举例:12321是回文数,个位与万位相同,十位与千位相同。

实现代码:

package StudentJavaSEday06;
public class Demo8 {
 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);
 }
 }
 }
}

运行结果:

6.不死神兔问题(斐波那契数列)

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

实现代码:
package StudentJavaSEday06;
public class Demo9 {
 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]);
 }
}

运行结果:

7.求数组中满足要求的元素和

(1)定义一个int类型的一维数组,内容为{171,72,19,16,118,51,210,7,18}

(2)求出该数组中满足要求的元素和。

(3)求和的元素的个位和十位不能包含7,并且只能为偶数。

代码实现:

package StudentJavaSEday06;
public class Demo10 {
 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);
 }
}

运行结果:

8.裁判评分

(1)在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。

(2)选手的最后得分为:去掉一个最高分和一个最低分后 其余4个选手的平均值。

(3)请写代码实现。(不考虑小数部分)

实现代码:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo11 {
 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;
 }
}

运行结果:

9.数组元素反转

(1)键盘录入5个int类型的数据存储数组arr中

(2)定义方法将arr数组中的内容反转

(3)定义方法对反转后的数组进行遍历

实现代码:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo12 {
 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;
 }
 }
}

运行结果:

10.数据加密

键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:

(1)每位数字都加上5,然后除以10的余数代替该数字,

(2)再将第一位和第四位交换,第二位和第三位交换,

(3)请把加密后的数据输出到控制台

实现代码:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo13 {
 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();
 }
}

运行结果:

11.定义一个方法传入一个5-10之间的随机数,根据传入的随机数创建数组,并向该数组再次存入5-10之间的几个随机元素。最后返回该数组并遍历

实现代码:

package StudentJavaSEday06;
import java.util.Random;
public class Demo14 {
 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;
 }
}

运行结果: