定义一个Location类,用于搜索二维数组的最大元素出现的位置和值。位置用公有的整型成员变量row, col表示,最大值用公有的浮点型成员变量maxValue表示。一个成员方法用来求解二维数组的最大元素及其位置,原型如下:
public static Location locateLargest(double[][] a)
例如数组为{{1,2,3},{8,9,9,5},{4,3,5,7,8}},最大元素为9,位置是(1,1)。注意最大值不止一个的时候,只记录第一次出现的位置。
请提供一个测试类,测试上述方法。
import java.util.Scanner;
class Location
{
public int row,col;
public double maxValue;
//构造函数
Location(){}
Location(int r,int c,double mv){
row=r;
col=c;
maxValue=mv;
}
//找最大的位置
public static Location locateLargest(double [][]a){
double maxValue=a[0][0];
int row=0,col=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
if(a[i][j]>maxValue){
row=i;
col=j;
maxValue=a[i][j];
}
}
}
Location lo=new Location(row,col,maxValue);
return lo;
}
}
public class LocationMax {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Location l=new Location();
System.out.println("请输入数组的行数:");
int r=input.nextInt();
double [][]a=new double[r][];
//因为数组可能不规则,所以对每行都要确定一个列数
for(int i=0;i<r;i++){
System.out.println("请输入数组第"+i+"行的列数:");
int c=input.nextInt();
a[i]=new double[c];
}
System.out.println("请输入数组");
for(int i=0;i<r;i++){
for(int j=0;j<a[i].length;j++){
a[i][j]=input.nextDouble();
}
}
l=l.locateLargest(a);
System.out.println("行:"+l.row);
System.out.println("列:"+l.col);
System.out.println("最大值:"+l.maxValue);
}
}
本文介绍如何定义一个Location类来寻找二维数组中的最大值及其坐标。Location类包含row和col表示位置,maxValue表示最大值。提供了一个静态方法locateLargest用于求解,并通过测试类验证其正确性。当最大值不唯一时,记录第一个出现的位置。
1040

被折叠的 条评论
为什么被折叠?



