gpt4 book ai didi

java - 出现数组越界异常。我该如何解决?

转载 作者:行者123 更新时间:2023-12-01 09:29:59 27 4
gpt4 key购买 nike

我正在尝试编写一个Java程序,该程序读取数据文件并将整数读入标准整数数组(不是ArrayList),对数组进行排序,并从最低到最高显示值。我还需要编写一个使用冒泡排序或选择排序进行排序的排序函数。我不断收到此错误:第 39 行和第 52 行中的“java.lang.ArrayIndexOutOfBoundsException: 8”。如何解决此问题?

public static void main(String[] args) {
// TODO Auto-generated method stub

// Declaring variables
String name;

// Declaring scanner for name of file
Scanner iscanner = new Scanner(System.in);

// Reading in file name
System.out.println("What is the name of your file?" );
name = iscanner.next();

java.io.File file = new java.io.File(name);

// Declaring scanner for inside the file
Scanner inp;

try {

// Assigning scanner to the file
inp = new Scanner(file);

// Declaring array
int [] nums = new int [(int) name.length()];

// Reading integers into array
for (int i =0; i < name.length(); i++)
{
nums[i] = inp.nextInt();
}
// THIS IS LINE 39*****************
// Calling sorting function
bubblesort(nums);

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

static void bubblesort(int[] nums){
int temp;
for (int i = 0; i < nums.length; i++)
{ // THIS IS LINE 52**************************
for (int j = 0; j < nums.length; j++)
{
if(nums[i] > nums[j+1])
{
temp = nums[j+1];
nums[j+1] = nums[i];
nums[i] = temp;
}
}
}

for(int i = 0; i < nums.length; i++)
{
System.out.println(nums[i]);
}

}

最佳答案

由于使用 j + 1,您遇到了数组越界异常。 。您的内循环计数可达 nums.length - 1 ,然后您可以向其中添加 1。因此,您正在访问 nums.length 处的数组。 ,这会导致异常。要解决此问题,请调整数组的边界,例如停在 j < nums.length - 1 .

关于java - 出现数组越界异常。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39518730/

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