精华内容
下载资源
问答
  • java数组下标越界异常
    千次阅读
    2021-03-08 10:36:52

    数组下标越界异常解决方法

    参考文章:

    (1)数组下标越界异常解决方法

    (2)https://www.cnblogs.com/GreenCode/p/7345508.html


    备忘一下。


    更多相关内容
  • java 数组下标越界异常(ArrayIndexOutOfBoundsException) java 数组下标越界异常(ArrayIndexOutOfBoundsException)
  • 编写程序,捕获并处理数组越界异常。 1、定义长度为10的数组,并赋初始值。 2、数组下标从0到10循环遍历数组,输出数组元素的值。 3、使用异常处理语句检测上述输出语句,控制程序正常退出 (1)然后在捕获处理时...

    前言

    一、任务介绍

    1.任务描述

    编写程序,捕获并处理数组越界异常。
    1、定义长度为10的数组,并赋初始值。
    2、数组下标从0到10循环遍历数组,输出数组元素的值。
    3、使用异常处理语句检测上述输出语句,控制程序正常退出
    (1)然后在捕获处理时调用toString方法,实现以下运行效果。
    在这里插入图片描述
    (2)当满足产生异常对象条件时,结合throw抛出一个具体的由异常信息构建的ArrayIndexOutOfBoundsException异常对象。
    然后在捕获处理时调用toString方法。
    实现以下运行效果
    在这里插入图片描述

    2.运行结果

    如上所示

    3.任务目标

     学会利用try…catch…finally处理异常,控制程序正常退出。
     掌握调用异常类的toString、getMessage、printStackTrace
    相关方法输出异常信息。
     掌握用异常信息组合成字符串再构造具体异常对象,然后结合throw将异常对象抛出的方法。

    4.实现思路

    1、数组越界异常(IndexOutOfBoundsException)是运行时异常,程序员是可以不处理的,虚拟机可以处理,但处理的结果是非正常退出。故本题希望通过程序员自己处理,以便用来控制程序正常退出。
    2、怎么处理呢?在整个输出数组的过程中,每一次访问数组元素,如果数组下标越界都可能出问题。我们想要的结果是只要第一次越界就报相应的异常信息,结束数组的整个访问。那就应该把整个for循环放到try中,结合catch进行捕捉处理。
    3、如果只是要控制正常退出,那完全不用自定义异常类,因为Java里本身就有ArrayIndexOutOfBoundsException。
    4、要获得一个具体的ArrayIndexOutOfBoundsException异常类对象,就需要调用ArrayIndexOutOfBoundsException异常类的有参构造方法,该方法接收一个字符串作为参数,那么我们就可以在发生异常时将引发异常的当前下标i和当前数组的长度值组合成一个串去构造就行。

    二、程序实现

    1.代码

    public class Main {
    
        public static void main(String[] args) {
            int[] a=new int[10] ;
            int i;
            for(i=0; i<10; i++)
                a[i] =i;
    
            try{
                for(i=0; i<=10; i++) {
                    if(i>=a.length){
                        throw new ArrayIndexOutOfBoundsException("当前要访问下标为:"+i+",数组长度为"+a.length+",发生数组越界异常");
                    }
                    else{
                        System.out.print(a[i]+" ");
                    }
                }
    
            }
            catch(ArrayIndexOutOfBoundsException e){
                System.out.println();
                System.out.println(e.toString());
            }
            finally {
                System.out.println("由程序员负责处理越界异常");
    
    
    
    

    2.实验结果(输出结果)

    在这里插入图片描述

    三、总结

    1. 如果在try里在数组遍历后写throw无法正确达到实验要求结果输出异常,因为异常后面的语句不会再执行
    2. 解决方法:加上判断语句,如果判断为异常直接抛出,如果不是就正常输出
    展开全文
  • 数组下标越界是一个编程初学者最容易犯的错误。 以一个简单的一维数组为例: int a[10];这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到9结束,与生活习惯中的1-10不一样,于是...

    数组下标越界是一个编程初学者最容易犯的错误。

    以一个简单的一维数组为例:

    • int a[10];这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到9结束,与生活习惯中的1-10不一样,于是产生一个a[10]的错误,即数组下标越界。

    • c和c++语言中数组下标越界,编译器是不会检查出错误的,但是实际上后果可能会很严重,比如程序崩溃等,所以在日常的编程中,程序员应当养成良好的编程习惯,避免这样的错误发生。

    • 若编辑网页时提示“数组下标越界”,除检查下上述问题外,再检查下文件中变量名称是否一致,很多时候是变量名称不一致所致,使用的角标大于等于数组的长度或为负数!

    一. 异常示例

    对于刚开始学习Java的大部分人来说,在使用数组的过程中,经常会遇到数组下标越界的异常。下面以一个实际案例来给大家进行说明:

    public class ArrayTest {
        public static void main(String[] args) {
            int[] numbers = {1, 2, 3, 4, 5};
            int number = numbers[5];
            System.out.println(number);
        }
    }

    运行上面的程序,会出现如下异常:

    Exception in thread "mainjava.lang.ArrayIndexOutOfBoundsException: 5
            at ArrayTest.main(ArrayTest.java:4)

    二. 解决思路

    很多初学者遇到异常时通常都不会查看异常信息,而是通过看代码来找出原因。当然,在代码很少的情况下,这是可以的。但这样会形成一个不良的习惯:在后续编码的过程中经常忽视异常信息,直接在编码中查找异常,在代码很多的情况下,找出异常的效率极低,还可能无法找到异常引发的原因。

    正确解决异常的方式应该是首先查看异常信息,比如该案例中出现了ArrayIndexOutOfBoundsException 异常,这是一个数组下标超出范围的异常,也就是业内人士常说的数组下标越界。这个异常出现的位置如下:

    at ArrayTest.main(ArrayTest.java:4)

    由这一行异常信息确定。也就是在 ArrayTest 这个类的第4行出现了数组下标越界异常。那么去查看第4行代码:

    int number = numbers[5];

    既然是数组下标越界,那就是说访问数组 numbers 中下标为5的元素时,出现的异常。说明这里的下标5超出了数组 numbers 的下标范围。而数组 numbers 的定义如下:

    int[] numbers = {1, 2, 3, 4, 5};

    由此可以看出,数组 numbers 的下标取值范围是0~4。而在使用过程中用了下标5,因此造成了数组下标越界异常。

    为什么这里下标的取值范围是0~4, 这是由数组的基本特性决定的,这些都是基础知识,这块儿薄弱的同学可以在网上查阅资料进行学习,比如千锋教育官网就有一些免费的学习资料,当然你也可以在B站上找到这套资料,完全免费,为初学者打牢基础提供的一些干货。

    扫码开始学习

    海量Java免费资源获取

    三. 总结

    我们在处理异常的时候,一定要注意查看异常信息,快速定位出异常的位置,找到问题,解决问题。

    展开全文
  • java新手求助 数组下标越界异常

    千次阅读 2021-03-13 16:49:36
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼这是一个输入有n个数字的数组,选出k个最小值的函数。import java.util.*;public class example { public static void main(String[] args) {try{Scanner scan=new ...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    这是一个输入有n个数字的数组,选出k个最小值的函数。

    import java.util.*;

    public class example { public static void main(String[] args) {

    try{

    Scanner scan=new Scanner(System.in);

    int n,k;//声明变量n,k

    System.out.println("请输入数组的个数n的数值");

    n=scan.nextInt();

    System.out.println("请输入要输出的数组最小值的个数k");

    k=scan.nextInt();

    System.out.println("请输入数组,用逗号分隔");

    String str=scan.next();//扫描输入的数组

    String[] nums=str.split(",|,");//把扫描数组放在字符串数组nums下

    double[] nums1=new double [n];//新定义一个可以存放n个数字的double数组nums1

    for(int i = 0; i

    nums1[i] =Double.parseDouble(nums[n]);//用for语句把字符串nums转换为double数组

    }

    Arrays.sort(nums1);//排序数组

    nums1=Arrays.copyOf(nums1,k);//复制数组nums1的k个元素

    System.out.println(Arrays.toString(nums1));//输出有k个元素的nums1

    }

    catch(Exception e){System.out.print(e);}

    }

    }

    展开全文
  • 数组下标越界异常

    2021-11-19 10:17:30
    数组下标越界异常:ArrayIndexOutOfBoundsException\ int[] arr={1,2,3}; for (int i = 0; i <= arr.length; i++) { System.out.println(arr[i]); } 把i <= arr.length改为i < arr.length即可解决
  • 刚刚学习Java不到一个星期,本来是搞C++的,没事学习Java,将来可以更好的想Android方向发展一下。现在正处于磨基础的阶段,对与每一个新手来书,最痛苦的莫过于此了。写了一个冒泡排序,用C++的思想写,没有任何...
  • ArrayIndexOutOfBoundsException的源码开头写明了答案Thrown to indicate that an array has been accessed with an illegal index. The index is either ...即为所使用的数组下标超出了0~(数组长度-1)的这个范
  • public class ArrayDemo02 { public static void main(String[] args) { //静态初始化 int[] a={1,2,3,4,5,6,7,8,9,10}; System.out.println(a[10]);//下标越界 } }
  • 数组下标越界,该怎么解决

    千次阅读 2021-04-14 03:16:42
    数组下标越界packageimport_csv;importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.Un....
  • 数组下标越界异常是如何产生的

    千次阅读 2020-08-04 22:24:58
    首先,ArrayList是基于数组实现的,是一个动态数组... 1、程序中报错的 at java.util.ArrayList.elementData(ArrayList.java:400) 和 at java.util.ArrayList.add(ArrayList.java:441),它们同属Add()方法。 添加...
  • 主要介绍了Java数组越界问题实例解析,具有一定参考价值,需要的朋友可以了解下。
  • 数组中常见的异常: 1.下角标越界:ArrayIndexOutOfBoundsException 原因 :因为使用的索引值没有在合理范围(0~数组的长度-1)之内 2.空指针异常:NullPointerException 原因 :只要调用属性和方法的...
  • Java数组04:下标越界及小结
  • 一个学生考试成绩录入程序的模块化设计,在编译时出现了数组下标越界错误提示:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0;at Ch3Demo7.main(Ch3Demo7.java:26)classCh3Demo7//...
  • java中,解决数组下标越界的问题

    千次阅读 2021-02-12 15:39:42
    } Input Error: java.lang.ArrayIndexOutOfBoundsException:1 at.com.CenDB.FileInsert.getText(FileInsert .java ;41) at.com.CenDB.main(FileInsert .java ;53) 能不能帮我解决下问题? 展开
  • 数组下标越界

    2022-04-11 21:21:35
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8 public class ArrayDemo06 { public static void main(String[] args) { int[] arrays = {1, 2, 3, 4, 5, 6, 7, 8}; } public ...
  • 数组的四个基本特点: 其长度是确定的,其一旦被创建,他的大小便不可以改变。 其元素必须是相同的类型,不允许出现混合多个类型 其元素可以是任何数据类型,包括基本...数组下标是像(0-9)这个样子的。 Arrayl
  • 数组的四个基本特点: 其长度是确定的。数组一旦被创建,它的大小就是不可改变的。 其元素必须是相同类型,不允许出现混合类型。...下标的合法区间:[0, length - 1] ,如果越界就会报错: public static void
  • 数组下标越界问题

    2021-11-29 19:06:25
    Exception in thread "main" java.lang....当使用不合法的数字下标输入访问数组时会报数组越界这种错误, 数组的起始下标下标0开始 数组arr的合法范围是[0, arr.length-1],当访问超出数组长度的下.
  • 这是一个非常常见的异常,从名字上看是数组下标越界错误,解决方法就是查看为什么下标越界。 下面是一个错误示例:  Exception in thread "main" Java.lang.ArrayIndexOutOfBoundsException: 2  at test4....
  • java数组下标越界的问题

    万次阅读 2015-07-28 00:10:29
    java数组下标越界的问题: 最近一直出现这类问题:数组下标越界 举例说明: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at day07.PaiXu.get3max(RankDemo2.java:15) at day07....
  • Java数组越界异常

    千次阅读 2021-03-14 11:02:35
    所以,我一直在为我的计算机科学课程编写一些代码来计算热指数。我有麻烦加载数据从文本文件,我被指示与该程序...(Java)数组越界异常import java.util.Scanner;import java.io.File;import java.io.IOException;p...
  • ——数组下标越界 假设有2个线程操作同一个ArrayList al,且array的容量刚好还可以存一个值。Thread1执行add()的step1完成, step2还没开始 时被挂起,这时Thread1“认为”array还有位置可以塞值,然后安心地睡去...
  • 如何处理Java数组索引越界异常

    千次阅读 2021-02-28 08:04:54
    通常,数组的大小固定,并且使用索引访问每个元素。例如,我们创建了一个大小为9的数组。然后,用于访问该数组元素的有效表达式将为a [0]至a [8](长度为1)。每当使用–ve值或大于或等于数组大小的值时,都会引发...
  • Java错误提示-------数组下标越界

    千次阅读 2019-05-04 11:43:37
    原文:... 错误提示:提示出错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 意思是数组下标越界 //at Array.main(Array.java:30) import java.u...
  • 前台vue初始化 pinIds:[],但是当pinIds前台查询条件传值为空时,pinIds[0]、pinIds[1]取不到值,就会报数组下标越界越界 改为 就可以了
  • 今天做练习的时候使用String的split(",")方法在控制台进行信息截取,一开始出现数组下标越界的提示我就去用for循环遍历了一下,有三个片段的输出信息,然后我网上查了说有以下几种情况: 1.代码编码和控制台中文编码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,085
精华内容 18,434
关键字:

java数组下标越界异常