[英]How to fix array index out of bounds error?
我得到的错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 610
at Fib.sorted(Fib.java:67)
at Fib.main(Fib.java:17)
我的密码
public class Fib
{
public static void main(String args[])
{
System.out.println(Arrays.toString( fiblist) );
System.out.println(Fib.add());
System.out.println(Fib.square());
System.out.println(Fib.reversal());
System.out.println(Fib.sorted());
}
public static int fiblist[] = {1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765};
public static int fiblen = fiblist.length;
public Fib()
{
// Do nothing
}
public static ArrayList<Integer> sorted()
{
ArrayList sorted = new ArrayList();
for(int counter = 0; counter < fiblist[4]; counter++ )
{
int temp1 = fiblist[counter];
System.out.println("Elements stored " + temp1);
}
for(int counter = fiblist[14]; counter < fiblist[19]; counter++)
{
int temp2 = fiblist[counter];
System.out.println("Last Elements stored " + temp2);
}
return sorted;
}
}
我试图将数组的最后5个元素存储在temp 2中。然后将其切换。 有没有更简单的方法可以做到这一点? 切换数组的前五个元素与后五个元素? 您将如何通过for循环切换它们?
您在混淆数组索引和值。 fiblist [19]是6765。您希望计数器从0变为4,从14变为19,而不是fiblist [19]。
for(int counter = 0; counter < 4; counter++ )
{
int temp1 = fiblist[counter];
System.out.println("Elements stored " + temp1);
}
for(int counter = 14; counter < 19; counter++)
{
int temp2 = fiblist[counter];
System.out.println("Last Elements stored " + temp2);
}
这有效
for(int i=0;i<fiblist.length;i++){
System.out.print(fiblist[i]+",");
}
System.out.println();
for (int i=0;i<5;i++){
temp=fiblist[i];
fiblist[i]=fiblist[fiblist.length-i-1];
//the first ellement= the last
//the second=second from last...
fiblist[fiblist.length-1-i]=temp;
}
for(int i=0;i<fiblist.length;i++){
System.out.print(fiblist[i]+",");
}
输出:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,
6765,4181,2584,1597,987,8,13,21,34,55,89,144,233,377,610,5,3,2,1,1,
尝试这个。 这是一种排序算法(虽然相当差)
public static void sort(int[] a) {
int iMin;
int n = a.length;
for (int j = 0; j < n-1; j++) {
iMin = j;
for (int i = j+1; i < n; i++) {
if (a[i] < a[iMin]) {
iMin = i;
}
}
if(iMin != j) {
swap(j, iMin, a);
}
}
}
public static void swap(int i, int j, int[] arr){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.