2017-01-28 53 views
-1
public class lab { 
    public static void main (String args[]){ 
     double[][] g = {RandomArray(3)}; 
     printArray(g); 
    } 

    private static void printArray(double[][] g) { 
     System.out.println(Arrays.deepToString(g)); 
    } 

    public static double[][] RandomArray(int n) { 

     double[] [] RandomArray = new double[n] [n]; 
     Random randomNumberCreator = new Random(); 
     for (int i = 0; i < n; i++) { 
      for (int j = 0; j < n; j++) { 
       RandomArray[i][j] = randomNumberCreator.nextDouble() * 100; 
      } 
     } 
     return RandomArray; 
    } 
} 

我不知道我的RandomArray方法出了什么问题,我希望它适用于二维数组,但是我明确地犯了一个错误,因为下面的行正在接收错误,我不确定为什么会发生这种情况正在发生。如果你能向我解释我所犯的错误,我将不胜感激。这个数组有什么问题?

double [] [] g = {RandomArray(3)};

+0

欢迎堆栈溢出!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –

+0

任何事情开始机智好命名!对于快速阅读器RandomArray(3)'创建类RandomArray的新对象,但是在你的代码中它是一个包装随机数组的方法。所以,你自己开始遵循Java命名约定。如果该方法有一个合适的名称,那么失败的行将是'double [] [] g = {createRandomArray(3)};'并且这表明您将由您的方法创建的数组包装到另一个数组维度中, ] [] []'。所以在重命名该方法后,请移除大括号。 –

+0

重复它很烦人,但发布问题和等待答案比搜索要花费更长的时间。 – efekctive

回答

2

删除大括号围绕“RandomArray”的函数调用

public static void main (String args[]){ 
     double[][] g = RandomArray(3); 
     printArray(g); 
    } 

    private static void printArray(double[][] g) { 
     System.out.println(Arrays.deepToString(g)); 
    } 

    public static double[][] RandomArray(int n) { 

     double[] [] RandomArray = new double[n] [n]; 
     Random randomNumberCreator = new Random(); 
     for (int i = 0; i < n; i++) { 
      for (int j = 0; j < n; j++) { 
       RandomArray[i][j] = randomNumberCreator.nextDouble() * 100; 
      } 
     } 
     return RandomArray; 
    } 
+0

谢谢,.-。 btw是我的方法是否正确?参数和参数等 –

+0

是 - 看起来不错;) - 有一个本地运行,一切正常。 – takethefake

+0

@JokesOnyou *“是 - 看起来很好;) - takethefake”*它看起来像它会工作,但它远没有“罚款”... –

0

您不正确初始化数组.... 你不需要的{}调用方法RandomArray时

只是做double[][] g = RandomArray(3);将做的工作

+0

感谢它的工作:) –

+0

欢迎您! –