Java基础知识之数组常见错误、操作案例 妖狐艹你老母 2022-09-08 05:59 118阅读 0赞 ### 文章目录 ### * * 一、数组使用时的常见错误 * 二、数组的操作案例 * 三、评委打分案例(综合) ## 一、数组使用时的常见错误 ## **1、索引越界错误** public class Test04{ public static void main(String[] args){ int[] arr = { 10, 20, 30}; System.out.println("arr[0]= " + arr[0]); System.out.println("arr[1]= " + arr[1]); System.out.println("arr[2]= " + arr[2]); System.out.println("arr[3]= " + arr[3]); } } 如上代码中,arr\[3\]应该是越界了的,数组中只有3个元素,因此会出现越界错误。但在编译时系统不会报错,而在运行时才会报错。 ![1.1.1][] **2、空指针异常** public class Test04{ public static void main(String[] args){ int[] arr = { 10, 20, 30}; arr = null; //将数组的地址定义为空 System.out.println(arr[0]); } } 如上代码,就在某处将数组的地址指向空了,因此会导致空指针异常,数组的值也就找不到了。同样在编译时不会报错,而是在运行时才会报错。 ![1.2.1][] ## 二、数组的操作案例 ## **1、数组遍历** public class Test04{ public static void main(String[] args){ int[] arr = { 11, 22, 33, 44, 55}; System.out.println("数组中所有元素有:"); for(int i=0; i<arr.length; i++){ System.out.println("arr[" + i + "]= " + arr[i]); } System.out.println("There is bottom!"); } } 主要有2个点:使用for循环进行遍历,可以同时获得下标和数组值;通过`arr.length`可以获得数组的长度。 ![2.1.1][] **2、获取最值** (1)分析 定义一个变量,用于保存最大值(或最小值); 取数组中第一个数据作为变量的初始值; 与数组中剩余的数据逐个比对。 (2)练习代码 public class Test04{ public static void main(String[] args){ int[] arr = { 11, 33, 55, 22, 44}; int max = arr[0]; System.out.println("数组中所有元素最大的值为:"); for(int i=1; i<arr.length; i++){ if(arr[i] > max){ max = arr[i]; } } System.out.println(max); System.out.println("There is bottom!"); } } ![2.2.1][] **3、数组元素求和** (1)分析 ①创建键盘录入对象,准备键盘录入 ②定义一个求和变量,准备记录累加后的结果 ③动态初始化一一个长度为5的int数组,准备存储键盘录入的数值 ④将键盘录入的数值存储到数组中 ⑤遍历数组,取出每一个元素, 并求和 ⑥输出总和 (2)练习代码 public class Test04{ public static void main(String[] args){ int[] arr = { 11, 33, 55, 22, 44}; int sum = 0; //定义存放求和的值,初值为0 System.out.println("数组中所有元素的和为:"); for(int i=0; i<arr.length; i++){ sum += arr[i]; //每次都加上数组元素的值 } System.out.println(sum); System.out.println("--------------This is bottom!--------------"); } } ![2.3.1][] **4、数组查找(返回索引值即位置)** (1)分析 ①定义一个数组,用静态初始化完成数组元素的初始化; ②键盘录入要查找的数据,用一一个变量接收; ③定义一个索引变量,初始值为-1; ④遍历数组,获取到数组中的每一个元素; ⑤拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 ⑥输出索引变量。 (2)练习代码 import java.util.Scanner; //需要用户输入 public class Test04{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); //实例化用户输入的对象sc int[] arr = { 11, 33, 55, 22, 44}; //定义数组 int index = -1; //定义存放查找到的索引值 System.out.print("请输入你需要查找的值(11, 33, 55, 22, 44): "); //提示用户出入 int data = sc.nextInt(); for(int i=0; i<arr.length; i++){ if(arr[i] == data){ index = i; //若满足查找条件,则赋值遍历到的下标给index索引变量 break; //同时跳出循环 } } System.out.println(data + "在数组中的第" + (index+1) + "个位置。"); System.out.println("--------------This is bottom!--------------"); } } ![3.4.1][] ## 三、评委打分案例(综合) ## **1、需求** 在编程竞赛中,有5个评委为参赛的选手打分,分数为0- 100的整数分。 选手的最后得分为去掉一个最高分和一 个最低分后的3个评委平均值(不考虑小数部分)。 **2、步骤分析** ① 定义一个数组,用动态初始化完成数组元素的初始化,长度为5 ② 键盘录入评委分数 ③ 由于是5个评委打分,所以,接收评委分数的操作,用循环 ④ 求出数组最大值 ⑤ 求出数组最小值 ⑥ 求出数组总和 ⑦ 按照计算规则进行计算得到平均分 ⑧ 输出平均分 **3、练习代码** import java.util.Scanner; //需要用户输入 public class Test04{ public static void main(String[] args){ //对象声明 Scanner sc = new Scanner(System.in); //实例化用户输入的对象sc //变量定义 int[] arr = new int[5]; //用动态法初始化数组 int index = -1; //定义存放查找到的索引值 int max; //存放最大值 int min; //存放最小值 int sum=0; //存放总分和(所有评委) int sum2=0; //存放总分和(去掉最大值最小值) int ave; //存放平均分 //获取评委分数 for(int i=0; i<5; i++){ System.out.print("请输入第 " + i + "次评分:"); //提示用户输入 int score = sc.nextInt(); //判断输入的分数是否规范 if(score>=0 && score<=10){ arr[i] = score; //把获取的分数放到定义好的数组arr中 }else{ System.out.println("输入分数不规范,请重新输入!"); i--; //同时i--,这样可以保证每个评委都输入正确分数再进行计算 } } //找出评委分数的最大值和最小值 max = arr[0]; //首先让最大值和最小值都等于初值 min = arr[0]; for(int i=1; i<arr.length; i++){ if(arr[i] > max){ max = arr[i]; } if(arr[i] < min){ min = arr[i]; } } //对评委分数进行求和:不加最大值和最小值 for(int i=0; i<arr.length; i++){ if(arr[i] == max || arr[i]==min){ sum += arr[i]; //5位评委的总分 continue; //若是最大值或最小值,则该次循环不继续 }else{ sum2 += arr[i]; //去掉最大值最小值的总分 sum += arr[i]; //5位评委的总分 } } //对评委分数求平均值:去掉最高分和最低分总分/评委个数 ave = sum2/3; //对计算结果进行输出 System.out.println("评委分数的max= " + max); System.out.println("评委分数的min= " + min); System.out.println("5位评委分数的总分为:" + sum); System.out.println("去掉最高分和最低分后评委总分为:" + sum2); System.out.println("去掉最高分和最低分后平均分为:" + ave); System.out.println("--------------This is bottom!--------------"); } } ![3.3.1][] [1.1.1]: /images/20220829/9a9080a9a95c445e8313a2b2d4693e79.png [1.2.1]: /images/20220829/d2e3ccef657f429b8675e5a1f297a6ec.png [2.1.1]: /images/20220829/a030e2ab689b43ecacb3b8dccca8d01f.png [2.2.1]: /images/20220829/633f7b051f5f4a2ba0ddacf9188367bf.png [2.3.1]: /images/20220829/c09db60d49284a31ace138f5c384f2f7.png [3.4.1]: /images/20220829/958d1a9780c7445bb4f95ebeca9f8e93.png [3.3.1]: /images/20220829/7c18384cebde487688a95976ac2ccd06.png
相关 在项目中常见Java字符串操作错误案例分析 在Java项目中,字符串操作是常见的编程活动。然而,由于各种原因,可能会出现一些错误操作的案例。以下是一些典型错误案例及分析: 1. **拼写错误**: - 例如:`s 偏执的太偏执、/ 2024年09月17日 13:00/ 0 赞/ 6 阅读
相关 Java字符串操作常见错误案例分析 在Java中,字符串是常用的数据类型。然而,在进行字符串操作时,可能会出现各种错误。下面是一些常见的错误案例及分析: 1. **空字符串拼接**: ```java 超、凢脫俗/ 2024年09月15日 09:15/ 0 赞/ 15 阅读
相关 Java中集合操作常见错误及修复案例 在Java中进行集合操作时,常见的错误包括: 1. 集合元素类型不匹配: - 错误:`List<String> list = new ArrayList<>();` 秒速五厘米/ 2024年09月13日 12:00/ 0 赞/ 7 阅读
相关 新手常见:Java编程中数组操作错误 在Java编程中,数组是一种常见的数据结构。如果你遇到关于数组操作的错误,可能会出现在以下几个方面: 1. 创建数组时,大小参数有误: ```java int[] array 野性酷女/ 2024年09月10日 23:36/ 0 赞/ 17 阅读
相关 Linux基础知识系列之四种常见错误以及校验 Permission denied 这个错误就是在[Linux基础知识系列之三][Linux]开头就提到过了,一般就是权限不足,需要sudo权限,至于怎么设置请看之前... 怼烎@/ 2024年04月17日 06:30/ 0 赞/ 16 阅读
相关 Java数组详解 -- 基础知识与常用操作 文章目录 前言 一、初识数组 1. 数组的定义 2. 数组的特点 3. 声明和初始化数组 4. 默认初始 曾经终败给现在/ 2023年10月14日 15:55/ 0 赞/ 6 阅读
相关 Java基础知识之数组常见错误、操作案例 文章目录 一、数组使用时的常见错误 二、数组的操作案例 三、评委打分案例(综合) 一、数组使用时的常见错误 1、索引越界错 妖狐艹你老母/ 2022年09月08日 05:59/ 0 赞/ 119 阅读
相关 java表达式常见错误—基础 package dicengshengyanFirst; //运算符:Java中预定义的进行某种特殊运算的符号 //+ - && << ?: //表达式 女爷i/ 2022年07月10日 04:25/ 0 赞/ 203 阅读
相关 HTML基础知识和CSS常见操作 在一个项目的开发中,由于没有专门做前端的同学,于是自己简单粗暴地学习了一些前端的基础知识,可以做一个简单的页面啦!把之前的笔记贴出来和后台开发的兄弟们共勉! 目录 一、cs 谁借莪1个温暖的怀抱¢/ 2021年09月28日 11:58/ 0 赞/ 326 阅读
还没有评论,来说两句吧...