0

我的任务是用两个方法和二维数组实现简单的 java 代码。但是我找不到一些简单的错误。是线

获取数组(NC);

“nc”下划线为“可能尚未初始化”

   public static void main (String[] args) {
       int nc[][];
       getArray(nc);
       for (int i=0;i<nc.length;i++)
       {
           System.out.println();
           for(int k=0;k<nc.length;k++)
           {
               System.out.print(nc[k]+", ");
           }
       }
   }

   static void getArray(int[][]nc){
       for (int i=0;i<nc[0].length;i++)
       {
           for(int k=0;k<nc.length;k++)
           {
               nc[k][i]=1+(int)(Math.random()*100);
           }
       }    
   }
}

如果我喜欢这样

公共静态无效主要(int nc [] []){

它告诉我们没有 main 方法。谢谢。

4

2 回答 2

1
int nc[][];

上面一行只声明了一个变量nc,它是整数数组的数组类型。但它不会初始化任何数组。变量的值为null

所以你需要创建一个数组:

int[][] nc = new int[10][10];

例如,它声明了 nc 变量,并为该变量分配了一个 10x10 的二维数组(用 0 填充)。

public static void main (int nc[][])

这不会声明主方法,因为主方法必须将字符串数组作为唯一参数。这个字符串数组包含执行程序时传递给程序的所有参数。例如:

java com.foo.bar.MyApp hello world

将使用包含andcom.foo.bar.MyApp的数组调用类的 main 方法。"hello""world"

于 2013-11-10T16:55:36.983 回答
1

在编写您的方法时,getArray(int[][])接收一个数组并将其填满。但是,如果您查看main方法的开头,则永远不会初始化它。

你可以在main方法中做到这一点:

public static void main (String[] args) {
    int nc[][] = new int [10][10]; // Or any other size
    getArray(nc);
...

但是,这“感觉”不像 Java 代码——感觉像 C。在 Java 中,由于我们有垃圾收集,并且不需要担心返回分配在方法中的对象,您可以重写getArray以处理(并返回) 分配:

public static void main (String[] args) {
    int nc[][] = getArray();
    /* The rest of your main method */
}

private static int[][] getArray() {
    int nc[][] = new int[10][10]; // Or any other size
    for (int i=0;i<nc[0].length;i++)
       {for(int k=0;k<nc.length;k++)
       {nc[k][i]=1+(int)(Math.random()*100);}}    }}
于 2013-11-10T16:59:45.883 回答