Java 如何找到二维数组的最大值和最小值的位置

Java 如何找到二维数组的最大值和最小值的位置,java,arrays,loops,multidimensional-array,max,Java,Arrays,Loops,Multidimensional Array,Max,我不知道我是否清楚这一点,但我已经有了最小和最大打印权,但我似乎不知道如何说出它们所在的确切行和列。 这就是我目前所拥有的 double max = m[0][0]; double min = m[0][0]; System.out.println("The matrix is : "); for(int i = 0; i < m.length; i++) { for ( int j = 0; j <

我不知道我是否清楚这一点,但我已经有了最小和最大打印权,但我似乎不知道如何说出它们所在的确切行和列。 这就是我目前所拥有的

double max = m[0][0];
       double min =  m[0][0];
    System.out.println("The matrix is : ");

        for(int i = 0; i < m.length; i++)
        {
            for ( int j = 0; j < m[i].length; j++ )
            {
                System.out.printf("   " + "%6.1f " , m[i][j]);
                if (m[i][j] > max)
                    max = m [i][j];     

                else if
                (m[i][j] < min)
                    min = m [i][j];
double max=m[0][0];
双最小值=m[0][0];
System.out.println(“矩阵为:”);
对于(int i=0;imax)
max=m[i][j];
否则如果
(m[i][j]
我怎样才能声明它们的位置?例如:(“最大数量在第1行第2列”)诸如此类。。。
我非常感谢任何帮助

查看下面的修改。我添加了变量来跟踪最小和最大的索引。在循环结束时,您可以简单地打印出
maxIndex1
maxIndex2
minIndex1
minIndex2

double max = m[0][0];
double min =  m[0][0];

//declare variables to track the indices of the min and max
int maxIndex1 = -1;
int maxIndex2 = -1;
int minIndex1 = -1;
int minIndex2 = -1;

System.out.println("The matrix is : ");
for(int i = 0; i < m.length; i++)
{
    for ( int j = 0; j < m[i].length; j++ )
    {
        System.out.printf("   " + "%6.1f " , m[i][j]);
        if (m[i][j] > max)
        {
            max = m [i][j]; 
            //record the indices of the new max
            maxIndex1 = i;
            maxIndex2 = j;  
        }  
        else if (m[i][j] < min)
        {
            min = m [i][j];
            //record the indices of the new min
            minIndex1 = i;
            minIndex2 = j;
        }
double max=m[0][0];
双最小值=m[0][0];
//声明变量以跟踪最小值和最大值的索引
int maxIndex1=-1;
int maxIndex2=-1;
int minIndex1=-1;
int minIndex2=-1;
System.out.println(“矩阵为:”);
对于(int i=0;imax)
{
max=m[i][j];
//记录新max的索引
maxIndex1=i;
maxIndex2=j;
}  
else如果(m[i][j]

请注意,如果数组中有两个相等且与最大值绑定的值,这将只记录其中一个。如果要记录最小/最大值的所有绑定位置,可以将其更改为保存坐标列表,而不是单个坐标。

这很简单!只需声明另外两个变量来存储您的x和y坐标。并在if和else中更新它们(别忘了在if和else子句中添加大括号!),这样你就有了它们!

当你做
max=m[i][j]
时,也要存储位置。所以在顶部,有
double max=m[0][0];int x=0;int y=0;
其中
x
y
是坐标。因此在
max=m[i][j]下
,你写的是
x=i;y=j;
。一般来说,存储最大值和最小值的最好方法是在你向数组中输入值时,如果你有选择的话,保持“运行”最大值和最小值的标签。你没有显示你是如何向数组中输入值的,所以我不知道你是在控制它还是外力。如果将值输入到数组中,那么在事后尝试搜索是不必要的,也是浪费的,因为您已经能够事先了解该信息。值得注意的是,只有当最大值和最小值在矩阵中是唯一的时,这才有效,因为您只存储了一个位置。您可以删除
 < <代码> >如果< >代码>如果你有一个排序的数组。@ GunARME,我认为这个例子将为OP所需要的工作,但是它绝对是值得注意的。我编辑了我的文章来包括这个。到OP:考虑在多个并行线程上做数组的第一个维度,以减少查找Min和Max Valu所需的时间。e@searchengine27如果所讨论的数组非常大,这不是一个坏主意。如果它们是正常大小,则不需要进行此优化。在这种情况下,不需要大括号。根据Java规范,if语句的文字语法是
if ParExpression语句[else语句]
其中
Statement
是块语句或单行语句。我同意,大括号是不必要的,纯粹是可选的和个人偏好。那么,你是说这很好?!如果(m[I][j]>max)max=m[I][j];maxIndex1=I;maxIndex2=j;