无法从方法返回二维数组

时间:2014-11-26 21:49:01

标签: java arrays return

我必须编写一个程序来查找数组中最大的元素。系统会提示用户输入行数和列数,然后提示输入行和列中的数字。

然后将此数组传递给一个方法,在该方法中,每行的每一列中的每个数字都进行比较,当找到最大数字时,该位置将被移动到一个字段,希望该字段从该方法返回。

它不起作用。这是我的代码..我确信这是愚蠢的,但我无法弄明白。我认为它可能与'a'在调用方法。

  • 我定义了' a' double[][] a = new double[r][c];
  • 我调用并使用int[] find = locateLargest(a);
  • 传递给方法
  • 我尝试将所有这3个用作return语句:

    // return largest;
    return largest[indxrow][indxcol];     
    // return [indxrow][indxcol];
    

如何修复我的代码?

void main(String[] args) {
    java.util.Scanner input = new java.util.Scanner(System.in);
    System.out.println("Enter the number of rows and columns of the array");   
    int r = input.nextInt();
    int c = input.nextInt();

    double[][] rowCol = new double[r][c];
    double[][] a = new double[r][c];

    System.out.println("Enter the array");
    for (int rows = 0; rows < rowCol.length; rows++) { 
        for (int cols = 0; cols < rowCol[rows].length; cols++) {
            rowCol[rows][cols] = input.nextDouble();
            a[rows][cols] = rowCol[rows][cols];
            int[] find = locateLargest(a);
        }
    }

    System.out.println("The location of the largest element is at (" + a[0]  + ", " + a[1] + ")");
}   

public static int[] locateLargest(double[][] a) {
    double largest = 0;
    int indxrow;
    int indxcol;

    for (int lcol = 0; lcol < a[0].length; lcol++ ) {
        largest = a[0][lcol];
        indxcol = lcol;
    }   

    for (int lrow = 1;  lrow  <  a.length;  lrow++)  { 
        for (int lcol = 0;  lcol  <  a[lrow].length;  lcol++) 
            if (a[lrow][lcol] > largest) {  
                largest = a[lrow][lcol];
                indxrow = lrow;
            }
        }
        //  return largest;
        return largest[indxrow][indxcol];     
        //return [indxrow][indxcol];
    }  
}

2 个答案:

答案 0 :(得分:0)

为了在你的方法中返回一个int [](正如你在public static int[] locateLargest(double[][] a)中指定的那样),你应该使用

return a[lrow];

因为aint[][],所以[a_certain_position]将是int[],即您正在寻找的内容。

编辑: 这假设a是一个int [] [],但我注意到你将它定义为double [] []。请记住(int [])在Java中无法进行[lrow]强制转换,因此我建议您更改方法以返回double [],如下所示:

public static double[] locateLargest(double[][] a)

答案 1 :(得分:0)

当方法的实际返回类型为double

时,您尝试返回int[]

从您的代码看起来如何,似乎您的意思是返回数组中的最大数字。在这种情况下,您应该返回double,因为您传入的数组是double[][]

public static double locateLargest(double[][] a) {
    double largest = 0;

    for (int lcol = 0; lcol < a[0].length; lcol++) {
        largest = a[0][lcol];
    }

    for (int lrow = 1; lrow < a.length; lrow++) {
        for (int lcol = 0; lcol < a[lrow].length; lcol++)
        if (a[lrow][lcol] > largest) {
            largest = a[lrow][lcol];
        }
    }
    return largest;
}