2014-12-31 43 views
0
for(i=0;i<=4;i++) 
      { 
       for(j=0;j<=4;j++) 
       { 
        if(hand[j] > hand[j+1]) 
        { 
         temp = hand[j]; 
         hand[j] = hand[j+1]; 
         hand[j+1] = temp; 
        } 
       } 
      } 

当我尝试运行这个气泡排序程序时,出现了一个ArrayIndexOutOfBounds异常。为什么?我该如何解决它?Java中的气泡排序ArrayIndexOutOfBounds

+0

'手[5]''时j == 4'现在阵列的大小是多少? –

+0

你的阵列有多大? – Shahar

+0

@JigarJoshi Array是5大元素。 –

回答

2

您正在访问hand[]从索引05(因为它是j+1)。 hand[]的大小必须至少为6,以便您能够做到这一点。在你的情况下,它不是,因此是错误。

2

出现这种情况是由于这样的事实你的数组大小因此范围是从0-4,而你试图从hand[j+1]在最后一次迭代得到的数值,这意味着手[5]产生这种例外。

1

正如其他人说,当你有数组中的5个元素,你只能访问索引0-4至于固定去,它应该是:

for(i=0;i<4;i++) 
{ 
    for(j=0;j<4-i;j++) 
    { 
     if(hand[j] > hand[j+1]) 
     { 
      temp = hand[j]; 
      hand[j] = hand[j+1]; 
      hand[j+1] = temp; 
     } 
    } 
} 
+0

因为我需要i <5,所以i <4在外环中将不起作用。 –

+0

@ShreyashChaudhari我为你解决了气泡排序问题。你不需要最后的索引。 – Shahar