2016-06-01 5 views
0

자바에서 배열을 읽었으며 배열의 모든 숫자의 모양을 계산하는 코드를 만들었습니다.Java의 main 메소드에서 정적 배열을 만드는 방법은 무엇입니까?

public class Example { 

    static int b[] = new int[13]; // I can not do static int b[] = new int[a.length] because a[] in not static array 
    static int count = 0; 

    public static void main(String[] args) { 

     int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; 
     counting(a); 
     printCount(); 
    } 

    private static void printCount() { 
     int k = 0; 
     for (int i = 0; i < b.length; i++) { 
      System.out.print("number" + " " + a[k] + " " + "is found" + " "); // here I get error in a[k] because it is not static , eclipse says : a cannot be resolved to a variable 
      System.out.println(b[i] + " " + "times"); 
      k++; 
     } 
     System.out.println(); 

    } 

    private static void counting(int[] a) { 
     for (int i = 0; i < a.length; i++) { 
      for (int k = 0; k < a.length; k++) { 
       if (a[i] == a[k]) { 
        b[i] = ++count; 
       } 
      } 
      count = 0; 
     } 

    } 
} 

나는 []를 주요 방법 정적하지 않기 때문에이 나는 방법 내 A [] 배열을 호출 할 수 없습니다() 메서드 내 printCount 막혔다. 내 주된 방법으로 static int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 };을 작성하려고했지만 이클립스는 그것을 받아들이지 않습니다. 위 예제 클래스의 모든 메서드에서 [] 배열을 정적 배열로 만들 수 있습니까?

+2

메소드 전용 범위 밖으로 이동 ... b []가 선언 된 영역에서 선언되어야합니다. – CConard96

+2

'b'와'count'처럼 전역 변수로 만들 수 있습니다. 또는 배열을'printCount (a); '를 사용하여 메소드에 매개 변수로 보내고 메소드의 서명을'private static void printCount (int [] a)'로 변경할 수 있습니다. – Gendarme

+0

고마워요, 주된 방법으로 남겨 둘 수 없습니까? 배열을 옆으로 옮기지 않고 그것을 처리하는 방법이 있나요? – Joe

답변

4
public static void main(String[] args) { 

     int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; 
     counting(a); 
     printCount(a); 
    } 

가 printCount() 메서드의 배열을 통과 해 주셔서 감사합니다.

+0

고맙습니다. 기본 메서드에서 정적 배열을 수행 할 수 없습니까? – Joe

+0

죄송합니다. 나는 너를 얻지 못했다. 주된 방법에 불과합니다. 액세스 할 수 있도록 printCount() 메서드로 전달하면됩니다. – FallAndLearn

+0

main 메소드에서 이렇게 할 수 없다는 것을 고맙습니다.'static int [] a = {2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; ' – Joe

2

주 방법에서 벗어나지 않으려면 왜 [정적]으로 바꾸시겠습니까? main() 외부에서 액세스 할 수있는 유일한 방법은 전달 된 경우입니다. Example.a []를 보통 정적 변수처럼 호출 할 방법이 없습니다. 기본 메서드 내에서 []의 길이를 가져온 다음 b []에 대한 경계를 설정해야하는 것처럼 보입니다.

2

정적으로 클래스 범위 밖으로 배열을 이동할 수 있습니다. 그런 다음 배열을 연습하면 쉽게 배열을 변경할 수 있습니다.

그러나 다른 사람들도 언급 한대로 scopes in Java을 공부하는 것이 좋습니다.

public class Example { 

    static int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; 
    static int[] b = new int[a.length]; 
    static int count = 0; 

    public static void main(String[] args) { 
     counting(); 
     printCount(); 
    } 

    private static void printCount() { 
     int k = 0; 
     for (int i = 0; i < b.length; i++) { 
      System.out.print("number" + " " + a[k] + " " + "is found" + " "); 
      System.out.println(b[i] + " " + "times"); 
      k++; 
     } 
     System.out.println(); 

    } 

    private static void counting() { 
     for (int i = 0; i < a.length; i++) { 
      for (int k = 0; k < a.length; k++) { 
       if (a[i] == a[k]) { 
        b[i] = ++count; 
       } 
      } 
      count = 0; 
     } 

    } 
} 
관련 문제