2016-04-22 151 views
0

我有一个数组有60个值,当我点击下一个按钮时,它将循环遍历数组中的所有数值,直到数字60,然后从数字1开始再次。阵列没有正确循环 - Java

我也有一个上一个按钮,所以我可以去的价值而不是上涨。当我点击第一个数组值[0]上的前一个按钮时,我的应用程序崩溃,我不知道为什么。

这里是我的代码:

public String nextFact() { 
    i++; 
    if(i >= facts.length) { 
     i = 0; 
    } 
    return facts[i]; 
} 

public String previousFact() { 
    i--; 
    if(i < 0) { 
     i = facts.length; 
    } 
    return facts[i]; 
} 
+1

你能解释为什么你认为'I = facts.length;'和'事实[I]'是正确的?我的意思是,你显然知道数组的长度不是一个有效的索引,因为你在'nextFact'中避免了这个数字,但是在'previousFact'中你认为是否是否定的? – Tom

回答

2

当你改变ifacts.length,因为有效的数组索引范围从0通过facts.length - 1您购买的ArrayIndexOutOfBoundsException。将i设置为facts.length - 1

if(i < 0) { 
    i = facts.length - 1; 
} 

大于或等于长度的环绕代码应该工作正常。

+0

我尝试过了,当我点击之前它仍然崩溃。 –

0

您的数组的大小为array.length。所以最后一个索引将是array.length-1。在您之前的函数中,您将array.length分配给i。这是比数组的最大索引更大的索引,因此它崩溃了。你也必须得到indexoutofbound错误。

此时应更换此该行:

i = facts.length - 1; 
+0

我尝试过了,当我点击之前它仍然崩溃。 –

+0

你得到的错误是什么? – denis