一、Scanner练习

1、Scanner类练习代码

  1. package com.atguigu.contact;
  2. import java.util.Scanner;
  3. /**
  4. * @Title: ScannerYooye.java
  5. * @Package com.atguigu.contact
  6. * @Description: TODO
  7. * @author Aifoosen E-mail: 597665748@qq.com
  8. * @date 2021年2月3日-下午3:31:04
  9. * @version V1.0
  10. */
  11. public class ScannerYooye {
  12. public static void main(String[] args){
  13. Scanner scan = new Scanner(System.in);
  14. System.out.println("请输入您的姓名");
  15. String name = scan.next();
  16. System.out.println("您好"+name);
  17. System.out.println("请问您几岁了?");
  18. int age = scan.nextInt();
  19. System.out.println(age+"岁,是一个美好的年纪");
  20. System.out.println("您体重多少呢?");
  21. double weight = scan.nextDouble();
  22. if(weight>60){
  23. System.out.print(weight+"公斤,有点胖了哟啊^_^");
  24. }
  25. if(weight<=50){
  26. System.out.print(weight+"公斤,有些瘦啊^_^");
  27. }
  28. System.out.println("您是否相中我了呢?(true/false)");
  29. boolean isLove = scan.nextBoolean();
  30. if(isLove){
  31. System.out.println("开始交往吧");
  32. }else{
  33. System.out.println("拜拜了您呐");
  34. }
  35. }
  36. }

2、运行效果展示

image.png

二、数组的介绍

  1. package com.yooye.java;
  2. /*
  3. * 一、数组的概述
  4. * 1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,
  5. * 并通过编号的方式对这些数据进行统一管理。
  6. *
  7. * 2.数组相关的概念:
  8. * >数组名
  9. * >元素
  10. * >角标、下标、索引
  11. * >数组的长度:元素的个数
  12. *
  13. * 3.数组的特点:
  14. * 1)数组是有序排列的
  15. * 2)数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
  16. * 3)创建数组对象会在内存中开辟一整块连续的空间
  17. * 4)数组的长度一旦确定,就不能修改。
  18. *
  19. * 4. 数组的分类:
  20. * ① 按照维数:一维数组、二维数组、。。。
  21. * ② 按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
  22. *
  23. * 5. 一维数组的使用
  24. * ① 一维数组的声明和初始化
  25. * ② 如何调用数组的指定位置的元素
  26. * ③ 如何获取数组的长度
  27. * ④ 如何遍历数组
  28. * ⑤ 数组元素的默认初始化值 :见ArrayTest1.java
  29. * ⑥ 数组的内存解析 :见ArrayTest1.java
  30. */
  31. public class ArrayTest {
  32. public static void main(String[] args) {
  33. //1. 一维数组的声明和初始化
  34. int num;//声明
  35. num = 10;//初始化
  36. int id = 1001;//声明 + 初始化
  37. int[] ids;//声明
  38. //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
  39. ids = new int[]{1001,1002,1003,1004};
  40. //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
  41. String[] names = new String[5];
  42. //错误的写法:
  43. // int[] arr1 = new int[];
  44. // int[5] arr2 = new int[5];
  45. // int[] arr3 = new int[3]{1,2,3};
  46. //也是正确的写法:
  47. int[] arr4 = {1,2,3,4,5};//类型推断
  48. //总结:数组一旦初始化完成,其长度就确定了。
  49. //2.如何调用数组的指定位置的元素:通过角标的方式调用。
  50. //数组的角标(或索引)从0开始的,到数组的长度-1结束。
  51. names[0] = "王铭";
  52. names[1] = "王赫";
  53. names[2] = "张学良";
  54. names[3] = "孙居龙";
  55. names[4] = "王宏志";//charAt(0)
  56. // names[5] = "周扬";
  57. //3.如何获取数组的长度。
  58. //属性:length
  59. System.out.println(names.length);//5
  60. System.out.println(ids.length);
  61. //4.如何遍历数组
  62. /*System.out.println(names[0]);
  63. System.out.println(names[1]);
  64. System.out.println(names[2]);
  65. System.out.println(names[3]);
  66. System.out.println(names[4]);*/
  67. for(int i = 0;i < names.length;i++){
  68. System.out.println(names[i]);
  69. }
  70. }
  71. }

三、数组的默认赋值

1、代码示例

  1. package com.atguigu.java;
  2. /*
  3. * ⑤ 数组元素的默认初始化值
  4. * > 数组元素是整型:0
  5. * > 数组元素是浮点型:0.0
  6. * > 数组元素是char型:0或'\u0000',而非'0'
  7. * > 数组元素是boolean型:false
  8. * > 数组元素是引用数据类型:null
  9. *
  10. * ⑥ 数组的内存解析
  11. */
  12. public class ArrayTest1 {
  13. public static void main(String[] args) {
  14. //5.数组元素的默认初始化值
  15. int[] arr = new int[4];
  16. for(int i = 0;i < arr.length;i++){
  17. System.out.println(arr[i]);
  18. }
  19. System.out.println("**********");
  20. short[] arr1 = new short[4];
  21. for(int i = 0;i < arr1.length;i++){
  22. System.out.println(arr1[i]);
  23. }
  24. System.out.println("**********");
  25. float[] arr2 = new float[5];
  26. for(int i = 0;i < arr2.length;i++){
  27. System.out.println(arr2[i]);
  28. }
  29. System.out.println("**********");
  30. char[] arr3 = new char[4];
  31. for(int i = 0;i < arr3.length;i++){
  32. System.out.println("----" + arr3[i] + "****");
  33. }
  34. if(arr3[0] == 0){
  35. System.out.println("你好!");
  36. }
  37. System.out.println("**********");
  38. boolean[] arr4 = new boolean[5];
  39. System.out.println(arr4[0]);
  40. System.out.println("**********");
  41. String[] arr5 = new String[5];
  42. System.out.println(arr5[0]);
  43. if(arr5[0] == null){
  44. System.out.println("北京天气不错!");
  45. }
  46. }
  47. }

2、输出结果

image.png

四、二维数组

1、二维数组介绍

  1. package com.yooye.java;
  2. /*
  3. * 二维数组的使用
  4. *
  5. * 1.理解:
  6. * 对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
  7. * 其实,从数组底层的运行机制来看,其实没有多维数组。
  8. *
  9. * 2. 二维数组的使用:
  10. * ① 二维数组的声明和初始化
  11. * ② 如何调用数组的指定位置的元素
  12. * ③ 如何获取数组的长度
  13. * ④ 如何遍历数组
  14. * ⑤ 数组元素的默认初始化值 :见 ArrayTest3.java
  15. * ⑥ 数组的内存解析 :见 ArrayTest3.java
  16. *
  17. *
  18. */
  19. public class ArrayTest2 {
  20. public static void main(String[] args) {
  21. //1.二维数组的声明和初始化
  22. int[] arr = new int[]{1,2,3};//一维数组
  23. //静态初始化
  24. int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
  25. //动态初始化1
  26. String[][] arr2 = new String[3][2];
  27. //动态初始化2
  28. String[][] arr3 = new String[3][];
  29. //错误的情况
  30. // String[][] arr4 = new String[][4];
  31. // String[4][3] arr5 = new String[][];
  32. // int[][] arr6 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};
  33. //也是正确的写法:
  34. int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
  35. int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};
  36. //2.如何调用数组的指定位置的元素
  37. System.out.println(arr1[0][1]);//2
  38. System.out.println(arr2[1][1]);//null
  39. arr3[1] = new String[4];
  40. System.out.println(arr3[1][0]);
  41. //3.获取数组的长度
  42. System.out.println(arr4.length);//3
  43. System.out.println(arr4[0].length);//3
  44. System.out.println(arr4[1].length);//4
  45. //4.如何遍历二维数组
  46. for(int i = 0;i < arr4.length;i++){
  47. for(int j = 0;j < arr4[i].length;j++){
  48. System.out.print(arr4[i][j] + " ");
  49. }
  50. System.out.println();
  51. }
  52. }
  53. }

2、二维数组默认初始值

  1. package com.atguigu.java;
  2. /*
  3. * 二维数组的使用:
  4. * 规定:二维数组分为外层数组的元素,内层数组的元素
  5. * int[][] arr = new int[4][3];
  6. * 外层元素:arr[0],arr[1]等
  7. * 内层元素:arr[0][0],arr[1][2]等
  8. *
  9. * ⑤ 数组元素的默认初始化值
  10. * 针对于初始化方式一:比如:int[][] arr = new int[4][3];
  11. * 外层元素的初始化值为:地址值
  12. * 内层元素的初始化值为:与一维数组初始化情况相同
  13. *
  14. * 针对于初始化方式二:比如:int[][] arr = new int[4][];
  15. * 外层元素的初始化值为:null
  16. * 内层元素的初始化值为:不能调用,否则报错。
  17. *
  18. * ⑥ 数组的内存解析
  19. *
  20. */
  21. public class ArrayTest3 {
  22. public static void main(String[] args) {
  23. int[][] arr = new int[4][3];
  24. System.out.println(arr[0]);//[I@15db9742
  25. System.out.println(arr[0][0]);//0
  26. // System.out.println(arr);//[[I@6d06d69c
  27. System.out.println("*****************");
  28. float[][] arr1 = new float[4][3];
  29. System.out.println(arr1[0]);//地址值
  30. System.out.println(arr1[0][0]);//0.0
  31. System.out.println("*****************");
  32. String[][] arr2 = new String[4][2];
  33. System.out.println(arr2[1]);//地址值
  34. System.out.println(arr2[1][1]);//null
  35. System.out.println("*****************");
  36. double[][] arr3 = new double[4][];
  37. System.out.println(arr3[1]);//null
  38. // System.out.println(arr3[1][0]);//报错
  39. }
  40. }

五、数组使用案例

1、示例代码

  1. package com.yooye.java;
  2. /**
  3. * @Title: YooyeArray01.java
  4. * @Package com.yooye.java
  5. * @Description: TODO
  6. * @author Aifoosen E-mail: 597665748@qq.com
  7. * @date 2021年2月3日-下午3:52:01
  8. * @version V1.0
  9. */
  10. public class YooyeArray01 {
  11. public static void main(String[] args){
  12. int[] arr = new int[] {8,3,1,6,7,5}; //提供电话号码中的某个数字
  13. int[] index = new int[] {2,0,3,2,1,5,3,2,1,3,4}; //提供下标
  14. String tel = "";
  15. for (int i = 0; i < index.length; i++) {
  16. tel += arr[index[i]]; //拼接为完整电话号码
  17. }
  18. System.out.println(tel); //控制台输出电话号码
  19. }
  20. }

2、输出效果

image.png

六、学员分数等级练习

1、练习要求

  1. /*
  2. * 2. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
  3. 成绩>=最高分-10 等级为’A’
  4. 成绩>=最高分-20 等级为’B’
  5. 成绩>=最高分-30 等级为’C’
  6. 其余 等级为’D’
  7. 提示:先读入学生人数,根据人数创建int数组,存放学生成绩。
  8. *
  9. */

2、练习代码

  1. package com.yooye.java;
  2. import java.util.Scanner;
  3. /**
  4. * @Title: YooyeArray02.java
  5. * @Package com.yooye.java
  6. * @Description: TODO
  7. * @author Aifoosen E-mail: 597665748@qq.com
  8. * @date 2021年2月3日-下午4:02:30
  9. * @version V1.0
  10. */
  11. public class YooyeArray02 {
  12. public static void main(String[] args){
  13. Scanner scan = new Scanner(System.in); //【1】定义一个用以获取用户输入信息的scanner
  14. System.out.println("请输入学生人数:");
  15. int number = scan.nextInt(); //【2】获取输入的学生人数
  16. int[] scorelist = new int[number]; //【3】创建一个用以记录学员成绩的数组
  17. System.out.println("请输入"+number+"个学生的成绩");
  18. int max = 0; //记录最高分
  19. for(int i=0;i<number;i++){ //【3】让用户输入对应数量的学员成绩并归纳出最高成绩
  20. scorelist[i] = scan.nextInt();
  21. if(max<scorelist[i]){
  22. max=scorelist[i];
  23. }
  24. }
  25. char level;
  26. //【4】根据最高成绩的对比,得到每个学员你的level并进行输出
  27. for (int i = 0; i < scorelist.length; i++) {
  28. if(max-scorelist[i]<=10){
  29. level = 'A';
  30. }else if(max-scorelist[i]<=20){
  31. level = 'B';
  32. }else if(max-scorelist[i]<=30){
  33. level = 'C';
  34. }else{
  35. level = 'D';
  36. }
  37. System.out.println(i+"号学员的分数是:"+scorelist[i]+",等级为"+level);
  38. }
  39. }
  40. }

3、运行结果

image.png