为什么我的阵列不工作?

时间:2014-12-12 18:06:36

标签: java arrays

有人可以帮助我完成我需要做的这个项目

public class ArrayPrinter {

public static void main(String[] args) {
    int[] oneD = { 5, 6, 7, 8 };
    printArray(oneD); 
    System.out.println(); 
    System.out.println("\n"); 

}
public static void printArray(int[][] arr) {
     System.out.print("["); 

     int[][] twoD = {{ 2, 4, 6, 8 },
                    {8, 7, 9, 1},
                    {3, 5, 1, 2}};

     printArray(twoD); 
     System.out.println(); //4
     System.out.println("\n"); 


     int rows = 3;
     int columns = 4;
     int i, j;

     for (i=0; i < rows ; i++) {
         for (j=0; j < columns ; j++) {
             System.out.print( aryNumbers[i] [j] + " ");
         }

        System.out   
     }

     System.out.println("]"); 
}
}

public static final void printArray(int[] arr) {
    System.out.print("["); 
    for (int i = 0; i < arr.length; i++) { 
        if (i == arr.length - 1) 
            System.out.print(arr[i]);
        else
            System.out.print(arr[i] + ", "); 
    }
    System.out.println("]"); 
}

}

什么都没有用,我也不明白为什么。我现在已经这样做了6个小时,我感到很愚蠢。我根本得不到任何东西。为什么in [] [] twoD = {{2,4,6,8},                                                                    {8,7,9,1},                                                                    {3,5,1,2}}; 不发布

3 个答案:

答案 0 :(得分:1)

您似乎没有调用printArray(int[][] arr)方法。在main中,您调用printArray(int[] arr)执行其操作然后返回。如果您不理解为什么它不调用int[][]版本,请花一些时间来学习Java中的方法重载。

答案 1 :(得分:1)

首先你应该知道什么是函数重载?

  

Java编程语言支持重载方法和Java   可以区分具有不同方法签名的方法。这个   表示类中的方法具有相同的名称   不同的参数列表。

具有相同名称但参数类型不同或参数数量不同的类中的两个函数会导致函数重载。

例如:

class Test{
    public static void main(String[] args){
        f1(2);//this will print Int function on screen
        f1(2.5);//this will print Double function on screen
    }

    public static void f1(int a){
        //do something
        System.out.println("Int function");
    }
    public static void f1(double a){
        //do something else
        System.out.println("Double function");
    }

}

同样在您的代码中,您有两个具有相同名称的函数

  

printArray(参数)

但在两个函数中参数都不同。一个接收一维数组,另一个接收二维数组。因此,如果您想要打印printArray(1D),那么只需制作一维数组并将其传递给参数。但是如果你想要打印printArray(2D),那么首先制作一个2D数组,然后将该2D数组传递给printArray函数。然后将调用其他函数。

希望你明白你所缺少的东西。

如果你明白这是什么问题。接下来是我做了一些修改的代码。但请先清楚这个概念,然后再去实际编码。

public class Test {

    public static void main(String[] args) {
        int[] oneD = { 5, 6, 7, 8 };
        printArray(oneD); 
        System.out.println(); 
        System.out.println("\n"); 

        int[][] twoD = {{ 2, 4, 6, 8 },
                {8, 7, 9, 1},
                {3, 5, 1, 2}};

        printArray(twoD); 


    }
    public static void printArray(int[][] arr) {
        System.out.println("["); 



        int rows = 3;
        int columns = 4;
        int i, j;

        for (i=0; i < rows ; i++) {
            for (j=0; j < columns ; j++) {
                System.out.print( arr[i] [j] + " ");
            }
            System.out.println();
        }

        System.out.println("]"); 
    }


    public static final void printArray(int[] arr) {
        System.out.print("["); 
        for (int i = 0; i < arr.length; i++) { 
            if (i == arr.length - 1) 
                System.out.print(arr[i]);
            else
                System.out.print(arr[i] + ", "); 
        }
        System.out.println("]"); 
    }

}

答案 2 :(得分:0)

首先你的程序有一些语法错误,第二个你只调用'printArray(oneD);'在PSVM()方法中,这就是为什么它不被称为twoD。请尝试更正程序,然后重试。