使用数组 + for 循环时出现“线程主 java.lang.arrayindexoutofboundsexception 中的异常”

Posted

技术标签:

【中文标题】使用数组 + for 循环时出现“线程主 java.lang.arrayindexoutofboundsexception 中的异常”【英文标题】:"exception in thread main java.lang.arrayindexoutofboundsexception" when using an array + for loop 【发布时间】:2015-01-04 06:46:21 【问题描述】:

当我编写这段代码来提示用户要输入多少个数字时,我收到一条错误消息:“thread main java.lang.arrayindexoutofboundsexception 中的异常”

PS:注意我是用一个int + for循环数组来写的。

import java.util.*;
public class Pr8
  public static void main(String[] args)
    Scanner scan = new Scanner (System.in);
    
    //Prompt the user for how many numbers are going to be entered.
    
    System.out.print("*Please write how many numbers are going to be entered: ");
    int a = scan.nextInt();
    int[] n = new int[a];
    
    for (int i = 0; i < a; i++)
      System.out.print("*Please enter an enteger: ");
      n[a] = scan.nextInt();
    //for
    
  //main
//Pr8

【问题讨论】:

那个 for loob 每次都会得到你 ;) 【参考方案1】:

改变

n[a] = scan.nextInt();

n[i] = scan.nextInt();

a 不是只有 a 元素的数组中的有效索引。有效索引为 0 到 a-1。

【讨论】:

@Bader ,n 是包含a 元素的数组,其有效索引为n 0 到a-1 而不是a。这是因为数组索引从 0 而不是 1 开始 @Bader 您正在循环使用i 变量,因此我假设您希望在循环的每次迭代中将新输入存储在数组的第 i 个位置。您不能将其存储在a 的位置,因为在您创建的数组中没有这样的位置。 如果你希望能够做到 n.getElementWithValue(...) 使用 arraylist (或其他列表实现),那么你可以这样做(使用 n Arraylist of Strings) n.get("This字符串") @Eran 你能在这里看看我的问题吗:***.com/questions/27181778/… ///// 我做的程序是 9 的补码来处理 java 中的加减法,但是有一些问题它!!

以上是关于使用数组 + for 循环时出现“线程主 java.lang.arrayindexoutofboundsexception 中的异常”的主要内容,如果未能解决你的问题,请参考以下文章

Java - 在 for 循环中使用“继续”时出现未处理的异常错误?

从数组中删除重复项时出现超出范围异常

在python中使用for循环时出现JSONDecodeError [重复]

在指针迭代中使用 for 循环时出现分段错误

在 for 循环中使用 str.split 时出现“ValueError 太多值无法解包”

从 for 循环打印时出现问题