精华内容
下载资源
问答
  • Java数组索引越界异常
    2021-12-10 22:11:46

    一、产生原因:

    访问了数组中不存在的索引

    二、解决方案

    访问数组中存在的索引即可

    三、实例

    public static void main(String[] args) {
        // 定义int类型的数组,存储元素11,22
        int[] arr = {11,22};
        // 打印数组中的第二个元素
        System.out.println(arr[1]);
        // 打印数组中的第三个元素
        System.out.println(arr[2]);
    }
    
    更多相关内容
  • Java数组越界异常

    千次阅读 2021-03-14 11:02:35
    所以,我一直在为我的计算机科学课程编写一些代码来计算热指数。我有麻烦加载数据从文本文件,我被指示与该程序...(Java)数组越界异常import java.util.Scanner;import java.io.File;import java.io.IOException;p...

    所以,我一直在为我的计算机科学课程编写一些代码来计算热指数。我有麻烦加载数据从文本文件,我被指示与该程序将要使用的数组一起工作。你看到的块被注释掉了,这是我正在尝试的另一个解决方案,它也不能工作......我应该如何解决它?谢谢!(Java)数组越界异常

    import java.util.Scanner;

    import java.io.File;

    import java.io.IOException;

    public class HeatIndex

    {

    public static void main(String [] args) throws IOException

    {

    Scanner keyWestHumidScan = new Scanner(new File("KeyWestHumid.txt"));

    Scanner keyWestTempScan = new Scanner(new File("KeyWestTemp.txt"));

    int counter1 = 0;

    int counter2 = 0;

    int [] keyWestHumid = {};

    double [] keyWestTemp = {};

    String header1 = " Heat index: Key West, Florida ";

    String header2 = "\n Months \n ";

    String [] months = {"Jan ", "Feb ", "Mar ", "Apr ", "May ", "Jun ", "Jul ", "Aug ", "Sep ", "Oct ", "Nov ", "Dec ", "Avg \n"};

    String header3 = "*************************************************************************************";

    String [] Labels = {"Temp (F) \n", "Hudimitiy (%) \n", "HI (F) "};

    //read keyWestHumid into array

    while(keyWestHumidScan.hasNext())

    {

    keyWestHumid[counter1] = keyWestHumidScan.nextInt();

    counter1++;

    //String data1_parse = keyWestHumidScan.next();

    ///int data1 = Integer.parseInt(data1_parse);

    //keyWestHumid[counter1] = data1;

    //counter1++;

    }

    //read keyWestTemp into array

    while(keyWestTempScan.hasNext())

    {

    String data2_parse = keyWestTempScan.next();

    double data2 = Double.parseDouble(data2_parse);

    keyWestTemp[counter2] = data2;

    counter2++;

    }

    System.out.println(header1);

    System.out.print(header2);

    for(String headData:months) {

    System.out.print(headData);

    }

    System.out.println(header3);

    for(String headData:Labels) {

    System.out.print(headData);

    }

    }

    }

    +2

    keyWestTemp是大小为0如果你不知道你的尺寸数组将在您创建它时使用List代替(通常的实现是ArrayList) –

    +0

    该异常会告诉您发生了哪一行,您尝试获取的索引以及容器的大小。用它来解决这个问题,或者至少告诉我们这3件事情。 –

    展开全文
  • 数组越界异常

    2014-07-03 11:26:31
    用try…catch…finally写一个捕捉数组越界异常例子。
  • import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JOptionPane;import ui.Panel;public class gridClicked extends MouseAdapter{private MineWiper min...

    package minewiper;

    import java.awt.event.MouseAdapter;

    import java.awt.event.MouseEvent;

    import javax.swing.JOptionPane;

    import ui.Panel;

    public class gridClicked extends MouseAdapter{

    private MineWiper mineWiper;

    private int x;

    private int y;

    private Panel panel;

    public gridClicked(int x,int y,MineWiper mineWiper,Panel panel) {

    this.mineWiper = mineWiper;

    this.x=x;

    this.y=y;

    this.panel = panel;

    }

    @Override

    public void mousePressed(MouseEvent e) {

    //如果左键按下

    if (e.getButton() == MouseEvent.BUTTON1) {

    mineWiper.dfs(this.x, this.y);

    boolean[][] visited = mineWiper.getIsVisited();

    visited[this.x][this.y] = true;

    mineWiper.setIsVisited(visited);

    if (mineWiper.getMap()[this.x][this.y] == 9) {

    this.gameOver();

    }

    }

    //如果右键按下

    if(e.getButton() == MouseEvent.BUTTON3) {

    if(!mineWiper.getIsVisited()[this.x][this.y]) {

    boolean[][] flag = mineWiper.getIsFlag();

    flag[this.x][this.y] = !flag[this.x][this.y];

    mineWiper.setIsFlag(flag);

    }

    }

    this.panel.repaint();

    }

    /*

    * 游戏结束

    */

    private void gameOver() {

    boolean[][] visited = mineWiper.getIsVisited();

    for(int x=0;x

    for(y=0;y

    {

    if(mineWiper.getMap()[x][y]==9) {

    visited[x][y] = true;

    mineWiper.setIsVisited(visited);

    }

    }

    this.panel.repaint();

    if(JOptionPane.showConfirmDialog(panel,"游戏结束,还想继续吗", "Game Over", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)

    {

    mineWiper.initMap();

    mineWiper.initMines();

    }

    else

    System.exit(0);

    }

    }

    package minewiper;

    import java.util.Random;

    public class MineWiper {

    private int mapSizeX = 10;

    private int mapSizeY = 10;

    /*

    * 表示对应方格是否翻转

    /

    private boolean[][] isVisited;

    /

    * map[x][y==0~8表示该方格不是雷,对应数字表示方格周围的雷数,9表示该方格是个雷

    */

    private int[][] map;

    //是否放置旗帜

    private boolean[][] isFlag;

    private int mineNumber;

    public MineWiper() {

    this.isVisited = new boolean[this.mapSizeX][this.mapSizeY];

    this.map = new int[this.mapSizeX][this.mapSizeY];

    this.isFlag = new boolean[this.mapSizeX][this.mapSizeY];

    this.mineNumber = this.mapSizeX * this.mapSizeY / 10;

    this.initMap();

    this.initMines();

    }

    //深度优先搜索相邻数值为0的格子

    public void dfs(int x,int y) {

    if(isOverBound(x, y)) return;

    if(isVisited[x][y] || map[x][y]!=0 || isFlag[x][y]) return;

    isVisited[x][y] = true;

    dfs(x-1, y-1); dfs(x-1, y); dfs(x-1, y+1);

    dfs(x, y-1); dfs(x, y+1);

    dfs(x+1, y+1); dfs(x+1, y); dfs(x+1, y-1);

    }

    //判断是否越界

    private boolean isOverBound(int x,int y) {

    if(x=this.mapSizeX || y>=this.mapSizeY) return true;

    else return false;

    }

    //初始化数组

    public void initMap() {

    for(int x=0;x

    for(int y=0;y

    {

    this.isVisited[x][y] = false;

    this.map[x][y] = 0;

    this.isFlag[x][y] = false;

    }

    }

    //初始化地雷(随机生成地雷)

    public void initMines() {

    Random random = new Random();

    int mx;

    int my;

    for (int i = 0; i < this.mineNumber; i++) {

    mx = random.nextInt(mapSizeX-1);

    my = random.nextInt(mapSizeY-1);

    while(map[mx][my]!=0) {

    mx = random.nextInt(mapSizeX);

    my = random.nextInt(mapSizeY);

    }

    map[mx][my]=9;

    }

    for(int x=0;x

    for(int y=0;y

    {

    if(map[x][y]==0) {

    if(!isOverBound(x-1, y-1)) if(map[x-1][y-1]==9) map[x][y]++;

    if(!isOverBound(x-1, y)) if(map[x-1][y]==9) map[x][y]++;

    if(!isOverBound(x-1, y+1)) if(map[x-1][y+1]==9) map[x][y]++;

    if(!isOverBound(x, y-1)) if(map[x][y-1]==9) map[x][y]++;

    if(!isOverBound(x, y+1)) if(map[x][y+1]==9) map[x][y]++;

    if(!isOverBound(x+1, y+1)) if(map[x+1][y+1]==9) map[x][y]++;

    if(!isOverBound(x+1, y)) if(map[x+1][y]==9) map[x][y]++;

    if(!isOverBound(x+1, y-1)) if(map[x+1][y-1]==9) map[x][y]++;

    }

    }

    }

    public int getMapSizeX() {

    return mapSizeX;

    }

    public void setMapSizeX(int mapSizeX) {

    this.mapSizeX = mapSizeX;

    }

    public int getMapSizeY() {

    return mapSizeY;

    }

    public void setMapSizeY(int mapSizeY) {

    this.mapSizeY = mapSizeY;

    }

    public boolean[][] getIsVisited() {

    return isVisited;

    }

    public void setIsVisited(boolean[][] isVisited) {

    this.isVisited = isVisited;

    }

    public int[][] getMap() {

    return map;

    }

    public void setMap(int[][] map) {

    this.map = map;

    }

    public boolean[][] getIsFlag() {

    return isFlag;

    }

    public void setIsFlag(boolean[][] isFlag) {

    this.isFlag = isFlag;

    }

    }

    错误提示

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 10

    at minewiper.gridClicked.mousePressed(gridClicked.java:29)

    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)

    at java.awt.Component.processMouseEvent(Component.java:6502)

    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

    at java.awt.Component.processEvent(Component.java:6270)

    at java.awt.Container.processEvent(Container.java:2229)

    at java.awt.Component.dispatchEventImpl(Component.java:4861)

    at java.awt.Container.dispatchEventImpl(Container.java:2287)

    at java.awt.Component.dispatchEvent(Component.java:4687)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

    at java.awt.Container.dispatchEventImpl(Container.java:2273)

    at java.awt.Window.dispatchEventImpl(Window.java:2719)

    at java.awt.Component.dispatchEvent(Component.java:4687)

    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)

    at java.awt.EventQueue.access$200(EventQueue.java:103)

    at java.awt.EventQueue$3.run(EventQueue.java:688)

    at java.awt.EventQueue$3.run(EventQueue.java:686)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

    at java.awt.EventQueue$4.run(EventQueue.java:702)

    at java.awt.EventQueue$4.run(EventQueue.java:700)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

    展开全文
  • ArrayIndexOutBoundException是数组越界异常,非常常见的一个异常。 从字面意思理解是数组下标访问错误,通常是在使用的时候访问了错误的数组下标。 个人觉得这个问题的出现一般是搞混了数组长度和下标的问题: 数组...

    ArrayIndexOutBoundException是数组越界异常,非常常见的一个异常。

    从字面意思理解是数组下标访问错误,通常是在使用的时候访问了错误的数组下标。

    个人觉得这个问题的出现一般是搞混了数组长度和下标的问题:

    数组的长度,是指数组中元素的个数,也就是xx.length=元素个数

    int a[]={1,2,3};
    System.out.println(a.length);//3
    

    而数组的下标是从0开始算的,最后一个元素的下标正好是length-1

    a[0]=1,a[1]=2,a[2]=3;
    

    如果说某个数,比如i<a.length,那么i最大能取的数就是length-1,如果a.length最大是3,那么i最多是2;

    在用i表示下标时,如果我们让i取a.length,那么就会发生数组越界异常。

    在java中的数组分配是从0到length-1的空间:

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

    具体分配情况如下:

    a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5;
    

    我们最多只能调用a[4],不能使用a[5],使用a[5]=数组越界

    解决方法是查看程序中访问数组时是否访问了length长度的下标

    展开全文
  • 源自:4-3 滚动状态判断与处理数组越界异常 求解决!!!package com.example.imooc;import java.io.BufferedInputStream;import java.io.IOException;import java.io.InputStream;import java.net....
  • 40.数组越界异常处理

    2022-04-17 12:34:36
    import java.text.SimpleDateFormat; public class ExceptionDemo2 { public static void main(String[] args) { int[] arr={1,2,3,4,5}; //当代码出现异常,就在这里创建了一个异常对象 //...
  • java 数组下标越界异常(ArrayIndexOutOfBoundsException) java 数组下标越界异常(ArrayIndexOutOfBoundsException)
  • 主要介绍了Java数组越界问题实例解析,具有一定参考价值,需要的朋友可以了解下。
  • 1.数组越界异常 观察一下代码,运行后会出现什么结果。 public static void main(String[] args) { int[] arr = {1,2,3}; System.out.println(arr[3]); } 创建数组,赋值3个元素,数组的索引就是0,1,2,...
  • Java中数组越界的问题

    千次阅读 2018-08-11 19:54:15
    1. 以前刚开始接触Java的时候发现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 ...
  • } 墨菲定律与 IndexOutOfBoundsException(数组越界异常) 今天维护又反馈了一问题过来,查询试卷时报数组越界异常: 2017-02-28 10:45:24,827[ERROR] HttpException[10.32.111.7:60446:2D07867BE ... 使用EasyPOI导入...
  • 处理数组越界异常

    千次阅读 2020-04-05 10:29:18
    数组越界异常,这是在开发不能出现的,一旦出现就必须修改我们编写的代码,为什么会出现数组越界问题呢,首先我们看一下代码。 public static void main(String[] args) { int[] arr = {1,2,3}; System.out....
  • private List> getData(HashMap freList){ int i=0;...可注释掉第一个for循环就会报数组越界异常java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 恳请各位大神拯救一下我这个萌新!
  • 编写程序,捕获并处理数组越界异常。 1、定义长度为10的数组,并赋初始值。 2、数组下标从0到10循环遍历数组,输出数组元素的值。 3、使用异常处理语句检测上述输出语句,控制程序正常退出 (1)然后在捕获处理时...
  • 数组是相同类型的数据的有序集合。数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成。其中,每个数据称作一个元素,每个元素可以通过一个索引(下标)来访问他们。 数组的三个基本特点: 1、...
  • 数组越界会产生什么异常?A、java.lang.ArrayIndexOutOfBoundsExceptionB、java.io.ArrayIndexOut更多相关问题Write 和 Input 方法都能进行写文件操作。智能组网产品分为哪两种产品()1094. ()产权比率在1以上说明...
  • 换言之,ArrayList中数组的长度只增不减,在第一次往ArrayList添加元素之后,数组容量就一定>=10(new ArrayList对象时,数组还没有真正创建,数组是在第一次向ArrayList添加元素时创建的) 但是由于...
  • java try catch 练习 数组越界 import java.util.Scanner; public class Main { public static void getArrN(){ int[] a = new int[10]; Scanner scanner = new Scanner(System.in); int i = scanner.nextInt...
  • java 防止数组越界问题

    万次阅读 2018-06-06 22:42:30
    Java中数组初始化和OC其实是一样的,...2)在处理的时候,可以判断数组的大小,保证自己不要访问超过数组大小的元素,这样就不会出现数组越界异常了。 3)当处理数组越界时,打印出遍历数组的索引十分有帮助,这样...
  • Java数组操作时,也会有一些异常情况的发生。这里我们罗列出了两种:ClassCastException和NullPointerException,下面我们来看一下具体的介绍。1、异常种类检查型异常和非检查型异常的主要区别在于其处理方式。...
  • 数组中常见的异常: 1.下角标越界:ArrayIndexOutOfBoundsException 原因 :因为使用的索引值没有在合理范围(0~数组的长度-1)之内 2.空指针异常:NullPointerException 原因 :只要调用属性和方法的...
  • 如何处理Java数组索引越界异常

    千次阅读 2021-02-28 08:04:54
    通常,数组的大小固定,并且使用索引访问每个元素。例如,我们创建了一个大小为9...例如,如果执行以下代码,它将显示数组中的元素,并要求您提供索引以选择一个元素。由于数组的大小为7,因此有效索引为0到6。示例i...
  • 数组特性:数组是一种引用类型数据、数组中多个数据的类型一致、数组的长度在程序运行期间不可改变、 数组初始化:在内存创建一个数组,并向其中赋些默认的值;初始化数组的方式有两种:动态初始化(指定数组长度...
  • 这种异常针对的是数组Array的使用过程出现的错误 public static void main(String[] args) { int[] arr = {1, 2, 3}; for (int i = 0; i ; i++) { System.out.println(arr[i]); // 因为a[4]获取第四个值时报的错 }...
  • 数组越界如何解决呢?

    千次阅读 2021-03-10 00:09:14
    题目:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~mn这些自然数按照右、下、左、上螺旋填入的结果。...注释块的解释:下面两个for循环 在目的数组的外层再套-1 如果不在外层套上-1 则数组越界?...
  • 用mybatis插入数据时显示数组越界异常,有时候重新运行程序又可以用了。 什么鬼 求大神指教 QAQ ``` RouteMapper routeMapper = Constants.SQL_SESSION.getMapper(RouteMapper.class); Favorite favorite = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,075
精华内容 22,430
关键字:

java中数组越界异常

java 订阅