2014-10-29 42 views
-1

我有类IP。错误在类中的Java核心thu_nghiem

package DES; 
public class IP 
{ 
    private int a[] ={58,50,42,34,26,18,10}; 

    public void hoanvi(int x[]) 
    { 
     int y[] = new int[7]; 
     for(int i=0;i<7;i++) 
     y[i] = x[i]; 
     for(int i=0;i<7;i++) 
     { 
      int z = a[i]; 
      x[i] = y[z]; 
     } 
    } 

主我被软件写:

import DES.*; 

public class thu_nghiem 
{ 
    public static void main(String[] args) 
    { 
     int a[]={58,50,42,34,26,18,10}; 
     IP b = new IP(); 
     b.hoanvi(a); 
     System.out.println(a[6]); 
    } 
} 

JVM messeage错误!为什么?

+3

什么是错误? – 2014-10-29 18:47:35

回答

1

在这行你从a数组的值:

int z = a[i]; 

在下次尝试从a阵列中使用的值作为y的位置的索引。

x[i] = y[z]; 

y被创建为7层的元件长,所以有效的索引是0至6,但a(58,50,42,34,26,18,10)中的所有的值是大于6,所以它不可避免地会抛出一个错误。

我不能告诉你如何解决它,因为你没有解释这段代码应该做什么。

0
package DES; 

public class IP { 
    private int a[] = {58, 50, 42, 34, 26, 18, 10}; 

    public void hoanvi(int x[]) { 
     int y[] = new int[7]; 
     for (int i = 0; i < 7; i++) { 
      y[i] = x[i]; 
      for (int j = 0; j < 7; i++) { 
       int z = a[j]; 
       x[i] = y[z]; 
      } 
     } 
    } 
} 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 58 
    at DES.IP.hoanvi(IP.java:11) 
    at thu_nghiem.main(thu_nghiem.java:9) 

1)    int z = a[j]; 
2)     x[i] = y[z]; 

所以,如果阵列中得到Y的指数。 看起来像提到的索引超出了数组的大小。

无论代码应该做什么...