当运行以下方法时,它会在第179行抛出ArrayIndexOutOfBoundsException
,这是嵌套循环中的if
语句。
我认为它与j-1
的索引有关。所以我把-1拿出来,在括号中只有j
,但它在交换的第一行抛出相同的异常。我已经找到了泡泡排序语法,从我能说的是我很好。我知道,我结束了。有什么建议来解决这个问题
public static void bubbleSort(int[]array1){
int temp = 0;
for(int i = 0; i < array1.length; i++){
for(int j = 0; j < (array1.length - i); j++){
if(array1[j-1] > array1[j]){
//swap
temp = array1[j-1];
array1[j-1] = array1[j];
array1[j] = temp;
}
}
}
}
答案 0 :(得分:0)
j = 0
因为当时j-1 = -1
,因此您遇到此错误的唯一问题就是这种情况。这不是java中的有效索引值,因此 arrayIndexOutOfBounds 异常。我已经对代码进行了必要的更改。请查看下面的代码段。
public static void bubbleSort(int[]array1){
int temp = 0;
for(int i = 0; i < array1.length; i++){
for(int j = 0; j < (array1.length - i-1); j++){
if(array1[j] > array1[j+1]){
//sawp
temp = array1[j];
array1[j] = array1[j+1];
array1[j+1] = temp;
答案 1 :(得分:0)
数组的第一个元素是0.使用j-1得到-1,这不在数组的范围内。
你试图把&#34; j&#34;。但是,我认为你把&#34; j + 1&#34;比较。并且由于&#34; j + 1&#34;而抛出了arrayIndexOutOfBounds异常。
尝试在第二个循环中使用它:
(array1.length - i - 1)
答案 2 :(得分:0)
您正在获得此异常,因为您已启动j = 0并执行j-1。在这种情况下,它会超出界限,从而给出例外。下面的代码可以正常工作。
list = []
table = driver.find_element_by_tag_name('tbody')
tr = table.find_elements_by_tag_name('tr')
for i in tr:
if i.find_elements_by_xpath("""//a[contains(@href, 'thing1')]"""):
name = i.find_elements_by_xpath("""//a[contains(@href, 'thing1')]""")[1]
text = name.text
list.append(text)
if i.find_elements_by_xpath("""//a[contains(@href, 'thing2')]"""):
link = i.find_element_by_xpath("""//a[contains(@href, 'thing2')]""")
link_text = link.text
list.append(link_text)
address = link.get_attribute('href')
list.append(address)
答案 3 :(得分:0)
对于j = 0时内循环的第一次迭代,j-1变为-1,arr [-1]为索引超出绑定异常。 现在当你在条件
中将j-1更改为j时if(array1 [j-1]&gt; array1 [j])// j-1到j
仍然在第一行交换arr [j-1]是arr [-1],它会使索引超出绑定异常。
请遵循以下代码以避免索引超出范围的异常。 从1开始j迭代。
`public static void bubbleSort(int[]array1){
int temp = 0;
for(int i = 0; i < array1.length; i++){
for(int j = 1; j < (array1.length - i); j++){ //initialize j=1 instead 0
if(array1[j-1] > array1[j]){
//sawp
temp = array1[j-1];
array1[j-1] = array1[j];
array1[j] = temp;
}
}
}
}`