如何在java中的main方法中创建一个静态数组?

时间:2016-06-01 20:34:45

标签: java arrays

我正在阅读java中的数组,我制作了一个代码来计算数组中所有数字的出现次数。

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;
        }

    }
}

我遇到了printCount()方法,我无法在方法中调用我的a []数组,因为main方法中的[]不是静态的。 我尝试在我的main方法中编写static int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 };,但eclipse不接受。 如何使[]成为静态数组,以便可以在上面的Example类中的所有方法中使用?

谢谢

3 个答案:

答案 0 :(得分: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()方法中传递数组。

答案 1 :(得分:2)

如果你不想让它移出主方法,为什么你想要一个[]是静态的?它可以在main()之外访问的唯一方法是它是否被传递。没办法像普通的静态变量一样调用Example.a []。在我看来,你需要在初始化之后获得[]的长度,然后在main方法中设置b []的界限。

答案 2 :(得分:2)

您可以将a数组作为static移动到类范围。然后,对于您的阵列练习,您可以轻松地更改阵列。

但是,正如其他人也提到的,我建议你学习scopes in Java

function(response) { // Error callback
    //alert('ERROR - RELOAD DATA '+response);
    console.log('ERROR - RELOAD DATA '+response);
    return setNewOrders();
}