定位多维数组中的最大元素
Locate the largest element in a multidimensional arrays
我必须使用 returns 二维数组中最大元素的位置的方法编写程序。
例子
输入数组的行数和列数:
3 4
输入数组:
23.5 35 2 10
4.5 3 45 3.5
35 44 5.5 9.6
最大元素的位置在 (1, 2)
我已经完成了我的代码,但它不工作。我该如何解决?我得到的只是以下错误:
符号:变量最大值
位置: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: maxValue 已在 locateLargest(double[][])
中定义
double maxValue = a[i][j];
^
homework1a.java:88: i 已经在 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]);
}
}
}
}
您声明了变量 row
、column
和 maxValue
两次。
此外,在行中:
if (a[i][j] > largest.maxvalue)
你的代码中没有maxvalue
这样的东西,也不是largest
的成员
在这部分代码中:
因为i
已经在外层for-loop
声明了,所以不需要再声明。只需使用:
...
for(i = 0; i < 2; i++){
...
}
. You don't need to post full code below code snippet is sufficient
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;
homework1a.java:51:, homework1a.java:52:, homework1a.java:53:
对于这三个,删除 'double'。如果您在引用变量时声明类型,Java 将假定您正在尝试定义相关变量。在这里您已经定义了这三个。此外,由于您根本不使用行或列,我建议您直接删除它们。
homework1a.java:88: i 已经在 main(java.lang.String[])
中定义
对于这个,你有一个嵌套的 for 循环,但它也使用了 i。您应该将 k 用于第二个嵌套 for 循环(使用 j 的循环之后的那个)。
问题:
- 循环 j 应该使用 a[i].length
- if 块中的行正在重新声明变量,删除关键字 'double '
- 你没有在任何地方声明最大设置,所以你有逻辑问题
- 使用 largest.maxValue 在逻辑上是不正确的,因为它应该包含行号和列号而不是实际的最大值
我会通过重写代码来解决这个问题,我认为这是实现目标的最有效方法:
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};
}
祝你好运!
我必须使用 returns 二维数组中最大元素的位置的方法编写程序。
例子
输入数组的行数和列数:
3 4
输入数组:
23.5 35 2 10
4.5 3 45 3.5
35 44 5.5 9.6
最大元素的位置在 (1, 2)
我已经完成了我的代码,但它不工作。我该如何解决?我得到的只是以下错误:
符号:变量最大值
位置: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: maxValue 已在 locateLargest(double[][])
中定义 double maxValue = a[i][j];
^
homework1a.java:88: i 已经在 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]);
}
}
}
}
您声明了变量 row
、column
和 maxValue
两次。
此外,在行中:
if (a[i][j] > largest.maxvalue)
你的代码中没有maxvalue
这样的东西,也不是largest
在这部分代码中:
因为i
已经在外层for-loop
声明了,所以不需要再声明。只需使用:
...
for(i = 0; i < 2; i++){
...
}
. You don't need to post full code below code snippet is sufficient
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;
homework1a.java:51:, homework1a.java:52:, homework1a.java:53:
对于这三个,删除 'double'。如果您在引用变量时声明类型,Java 将假定您正在尝试定义相关变量。在这里您已经定义了这三个。此外,由于您根本不使用行或列,我建议您直接删除它们。
homework1a.java:88: i 已经在 main(java.lang.String[])
中定义对于这个,你有一个嵌套的 for 循环,但它也使用了 i。您应该将 k 用于第二个嵌套 for 循环(使用 j 的循环之后的那个)。
问题:
- 循环 j 应该使用 a[i].length
- if 块中的行正在重新声明变量,删除关键字 'double '
- 你没有在任何地方声明最大设置,所以你有逻辑问题
- 使用 largest.maxValue 在逻辑上是不正确的,因为它应该包含行号和列号而不是实际的最大值
我会通过重写代码来解决这个问题,我认为这是实现目标的最有效方法:
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};
}
祝你好运!