gpt4 book ai didi

java - java 获取 ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-02 04:39:31 26 4
gpt4 key购买 nike

我的程序使用多线程计算一些东西。我已经对其进行了测试,同时给数组提供了像 10 这样的硬编码长度,并且我的程序运行良好。然而,我现在使用“length”执行此操作的方式,我在这一行收到“数组越界异常”:array[i] = Integer.parseInt(splited[i]);在我得到任何输出之前,无法弄清楚为什么。有人可以帮忙吗?谢谢。

import java.util.*;

public class Stats {

static int length;
static int[] array = new int[length];


private static class WorkerThread extends Thread
{

//...some stuff with threads
}


public static void main(String[] args) {


Scanner keyboard = new Scanner(System.in);

System.out.println("Please enter the integers: ");
String line = keyboard.nextLine();
//split line by space and store each number as a sting
//in a string array
String[] splited = line.split("\\s+");
//get length of string array of numbers
length = splited.length;

//convert string to int and store in int array
for(int i=0; i<length; i++)
{
array[i] = Integer.parseInt(splited[i]);
}

//...some stuff with threads
}
}

最佳答案

使用静态初始化数组

static int length;
static int[] array = new int[length];

初始化时长度为 0,因此您会得到一个 0 大小的数组 --> 第一次尝试时超出范围。当之后更改长度时,这不会动态地重新分配新数组。

当你知道长度时,你应该分配数组:

    length = splited.length;
array = new int[length];

//convert string to int and store in int array
for(int i=0; i<length; i++)
{
array[i] = Integer.parseInt(splited[i]);
}

现在将为该行创建一个新数组。不用担心旧的,它会被垃圾收集。

关于java - java 获取 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30337450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com