Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:5_Java_Arrays - Fatal编程技术网

“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:5

“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:5,java,arrays,Java,Arrays,运行一个程序后,它将我指向If(key.compareTo(a[mid])==0)它有什么问题 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5 在BinarySearch.search(BinarySearch.java:17)中 main(SearchesDemo.java:23) import java.util.Scanner; 导入java.util.array; 公共类SearchesDemo{ 公共静态void main(

运行一个程序后,它将我指向
If(key.compareTo(a[mid])==0)
它有什么问题

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5 在BinarySearch.search(BinarySearch.java:17)中 main(SearchesDemo.java:23)

import java.util.Scanner;
导入java.util.array;
公共类SearchesDemo{
公共静态void main(字符串[]args){
BinarySearch search=新的BinarySearch();
int结果,键;
整数[]整数数组={0,2,4,6,8,10,12,14,16,18};
String[]stringArray={“苹果”、“橙子”、“桃子”、“草莓”、“西瓜”};
System.out.println(“整数测试数组包含:”);
System.out.println(Arrays.toString(integerArray));
for(键=-3;键==4;键++){
结果=搜索。搜索(整数数组,0,10,键);
搜索.toString(整数.toString(键),结果);
}
System.out.println(“\n字符串测试数组包含:”);
System.out.println(Arrays.toString(stringArray));//可能不需要toString
result=searches.search(stringArray,0,10,“apples”);
搜索。toString(“苹果”,结果);
结果=searches.search(stringArray,0,10,“plums”);
搜索。toString(“李子”,结果);
System.out.println(“\n进程已完成”);
}
}
公共类二进制搜索{
公共静态整数搜索(T[]a,int first,int last,T key){
int result=0;//使编译器满意。
如果(第一个>最后一个)
结果=-1;
否则{
int mid=(第一个+最后一个)/2;
if(key.compareTo(a[mid])==0)
结果=中等;
else if(key.compareTo(a[mid])<0)
结果=搜索(a,first,mid-1,key);
else if(key.compareTo(a[mid])>0)
结果=搜索(a,中间+1,最后一个,键);
否则{
System.out.println(“错误”);
结果=-1;
}
}
返回结果;
}
公共静态void toString(字符串键,int结果){
如果(结果==-1)
System.out.println(数组中没有键+);
其他的
System.out.println(键+”位于索引“+结果);
}
}

不要发送
10
上一个
值。只需发送数组的长度

result = searches.<String>search(stringArray, 0, stringArray.length, "apples");
searches.toString("apples", result);
result = searches.<String>search(stringArray, 0, stringArray.length, "plums");
searches.toString("plums", result);
result=searches.search(stringArray,0,stringArray.length,“apples”);
搜索。toString(“苹果”,结果);
结果=searches.search(stringArray,0,stringArray.length,“plums”);
搜索。toString(“李子”,结果);
这里也一样:

result = searches.<Integer>search(integerArray, 0, integerArray.length, key);
result=searches.search(integerArray,0,integerArray.length,key);

不要发送
10
上一个
值。只需发送数组的长度

result = searches.<String>search(stringArray, 0, stringArray.length, "apples");
searches.toString("apples", result);
result = searches.<String>search(stringArray, 0, stringArray.length, "plums");
searches.toString("plums", result);
result=searches.search(stringArray,0,stringArray.length,“apples”);
搜索。toString(“苹果”,结果);
结果=searches.search(stringArray,0,stringArray.length,“plums”);
搜索。toString(“李子”,结果);
这里也一样:

result = searches.<Integer>search(integerArray, 0, integerArray.length, key);
result=searches.search(integerArray,0,integerArray.length,key);

问题是您的stringArray中有5个元素(索引0、1、2、3、4),由于您从0开始索引,最后索引为10,因此介质为5,因此您尝试访问一个不在那里的索引->越界。

问题是您的stringArray中有5个元素(索引0、1、2、3、4),由于起始索引为0,最后为10,介质为5,因此您尝试访问不在那里的索引->越界。

异常发生在main方法中的行号23。您将开始和结束索引传递为0和10

 result = searches.<String>search(stringArray, 0, 10, "apples");
result=searches.search(stringArray,0,10,“apples”);

您的
stringarray
的长度只有5。当计算mid时,它变为
(0+10)/2
,即5
arr[5]
抛出
arrayIndexOutOfBound
异常。

异常发生在main方法的行号23中。您将开始和结束索引传递为0和10

 result = searches.<String>search(stringArray, 0, 10, "apples");
result=searches.search(stringArray,0,10,“apples”);

您的
stringarray
的长度只有5。当计算mid时,它变为
(0+10)/2
,即5
arr[5]
抛出
arrayIndexOutOfBound
异常。

对0和10的中点的求值为5,但要访问数组的第五个元素,需要[4],因为它从0索引开始。这是一个长度为5的字符串数组,因此(0-4)。对0和10的中点的求值为5,但要访问数组的第五个元素,需要一个[4],因为它从0索引开始。这是一个长度为5的字符串数组,因此是(0-4)。很抱歉,我看到了“SearchesDemo.main(SearchesDemo.java:23)”这一行:“result=searches.search(stringArray,0,10,“apples”);”@FallAndLearn-nope。再次查看代码和异常。它说明了23号线。不幸的是,问题的作者将两个文件的内容放在了同一个代码块中。异常指向类
SearchesDemo
到第23行(
result=searches.search(stringArray,0,10,“apples”);
)。对不起,我的错误。我看到了另一种情况:)对不起,但我看到了“SearchesDemo.main(SearchesDemo.java:23)”这行:“result=searches.search(stringArray,0,10,“apples”);“@FallAndLearn-nope。再次查看代码和异常。它说明了23号线。不幸的是,问题的作者将两个文件的内容放在了同一个代码块中。异常指向类
SearchesDemo
到第23行(
result=searches.search(stringArray,0,10,“apples”);
)。对不起,我的错误。我看到了另一种情况:)