我必须使用一种方法编写一个程序,该方法返回二维数组中最大元素的位置。
例如
输入数组的行数和列数:
3 4
输入数组:
23.5 35 2 10
4.5 3 45 3.5
35 44 5.5 9.6
最大元素的位置为(1,2)
我已经完成了我的代码,但它无法正常工作。我该如何解决?我得到的是以下错误:
symbol:变量maxvalue
location:class int []
if (a[i][j] > largest.maxvalue)
^
homework1a.java:51:已经在locateLargest中定义了行(double [] [])
double row = i;
^
homework1a.java:52:列已在locateLargest中定义(double [] [])
double column = j;
^
homework1a.java:53:已经在locateLargest中定义了maxValue(double [] [])
double maxValue = a[i][j];
^
homework1a.java:88:我已经在main中定义了(java.lang.String [])
for (int i = 0; i < 2; i++)
^
5个错误
我的代码
import java.util.Scanner;
public class hwm1 {
public static int[] locateLargest(double[][] a)
{
int[] largest = new int[2];
double row = 0;
double column = 0;
double maxValue = a[0][0];
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < a.length; j++)
{
if (a[i][j] > largest.maxvalue)
{
double row = i;
double column = j;
double maxValue = a[i][j];
}
}
}
return largest;
}
public static void main(String[] args)
{
//Create Scanner
Scanner input = new Scanner(System.in);
//User input rows and columns
System.out.println("Enter the number of rows and columns in the array: ");
int numberOfRows = input.nextInt();
int numberOfColumns = input.nextInt();
//User input data in array
System.out.println("Enter numbers into array: ");
//Create array
double[][] a = new double[numberOfRows][numberOfColumns];
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < a[i].length; j++)
{
a[i][j] = input.nextDouble();
}
int[] largest = locateLargest(a);
System.out.println("The location of the largest element is at "+ "("+largest[0] +", " + largest[1] + ")");
for (int i = 0; i < 2; i++)
{
System.out.print(largest[i]);
}
}
}
}
答案 0 :(得分:1)
您要声明变量row
,column
和maxValue
两次。
另外,在行中:
if (a[i][j] > largest.maxvalue)
您的代码中没有maxvalue
这样的内容,也不是largest
的成员
在这部分代码中:
由于i
已在外部for-loop
中声明,因此您无需再次声明它。只需使用:
...
for(i = 0; i < 2; i++){
...
}
答案 1 :(得分:0)
。您无需在代码段下面发布完整代码就足够了
double row = 0; //declaring first time
double column = 0;//declaring first time
double maxValue = a[0][0];//declaring first time
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < a.length; j++)
{
if (a[i][j] > largest.maxvalue)// there is no variable maxvalue in Array class in java
{
double row = i; // declaring again
double column = j;// declaring again
double maxValue = a[i][j];// declaring again
}
}
}
return largest;
答案 2 :(得分:0)
homework1a.java:51 :, homework1a.java:52 :, homework1a.java:53:
对于这三个,请删除&#39; double&#39;。如果在引用变量时声明了类型,Java将假定您正在尝试定义相关变量。在这里你已经定义了这三个。此外,由于您根本不使用行或列,我建议您只删除它们。
homework1a.java:88:我已经在main中定义了(java.lang.String [])
对于这个,你有一个嵌套的for循环,但它也使用了i。您应该使用k作为第二个嵌套for循环(使用j后的第二个循环)。
答案 3 :(得分:0)
的问题:
我会通过重新编写如下代码来解决这个问题,我认为这是实现目标的最有效方法:
public static int[] locateLargest(double[][] a)
{
int maxRow=-1,maxCol=-1;
double maxVal=-1;
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < a[i].length; j++)
{
if (a[i][j] > maxVal)
{
maxRow = i;
maxCol = j;
maxVal = a[i][j];
}
}
}
return new int[]{maxRow,maxCol};
}
祝你好运!