2016-07-04 2 views
-2
package Array; 
public class ArrayLesson1 
{ 
    static int[] array = { 10, 20, 30, 40 }; 
    public static void main(String[] args) { 
     int i = 0; 
     System.out.println("While Loop Result"); 
     while (i < 4) { 
      int c = array[i] * array[i]; 
      System.out.println("Resutl = " + c); 
      i++; 
     } 
     subclass obj = new subclass(); 
     obj.loopj(); 
     obj.loopk(); 
    } 
} 

class subclass { 
    public static void loopj() { 
     for (int j = 0; j < 4; j++) { 
      int result = array[j] * array[j]; 
      System.out.println("FOR Loop J Result"); 
      System.out.println("Result = " + result); 
     } 
    } 

    static void loopk() { 
     for (int k = 0; k < 4; k++) { 
      int result2 = array[k] + array[k]; 
      System.out.println("FOR Loop K Result"); 
      System.out.println("Result = " + result2); 
     } 
    } 
} 

Из приведенного выше кода я не смог получить доступ к «массиву» из класса «ArrayLesson1».Контроль видимости переменных

Ниже вы можете найти выход:

While Результат Loop

Resutl = 100

Resutl = 400

Resutl = 900

Resutl = 1600

Я получаю ниже ошибки.

Exception in thread "main" java.lang.Error: Unresolved 
compilation problems: array cannot be resolved to a variable array 
cannot be resolved to a variable 

at Array.subclass.loopj(ArrayLesson1.java:40) 
at Array.ArrayLesson1.main(ArrayLesson1.java:25) 
+1

И в чем ваш вопрос? – GhostCat

ответ

0

Вы объявили массив в вашем ArrayLesson1 класса, который не виден на вашу subclass поэтому вы получаете ошибки компиляции.

У вас есть несколько вариантов,

1) Создать конструктор в вашем subclass принять массив в качестве аргумента и создать локальную переменную в вашем subclass и передать массив из ArrayLesson1 в подклассе, например так:

//in subclass 
private int [] array; 
public subclass(int [] array) { 
    this.array = array; 
} 

Так называют, как это в вашем ArrayLesson1 классе, как это:

subclass obj=new subclass(array); // Pass array like this 

2) M odify loopj() и loopk() способ принять массив в качестве параметра, например так:

public static void loopj(int [] array) { 
    //Codes here 
// 

и вызвать его в вашем ArrayLesson1 так:

obj.loopj(array); 

3) Или, если вы хотите использовать статическую ссылку, то вам нужно использовать с classname.variablename прежде чем использовать его, как это:

ArrayLesson1.array[j] 

Позвольте мне знать, если это помогает.

Смежные вопросы