我必须编写一个程序来查找数组中最大的元素。系统会提示用户输入行数和列数,然后提示输入行和列中的数字。
然后将此数组传递给一个方法,在该方法中,每行的每一列中的每个数字都进行比较,当找到最大数字时,该位置将被移动到一个字段,希望该字段从该方法返回。
它不起作用。这是我的代码..我确信这是愚蠢的,但我无法弄明白。我认为它可能与'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];
}
}
答案 0 :(得分:0)
为了在你的方法中返回一个int [](正如你在public static int[] locateLargest(double[][] a)
中指定的那样),你应该使用
return a[lrow];
因为a
是int[][]
,所以[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;
}