2d阵列中最小的数字无法正常工作

时间:2015-06-03 05:59:51

标签: java arrays

我想找到数组中最小的数字 当我执行此代码时,它会显示" 23"最小的。
我无法找到错误,任何人都可以帮助我吗?

这是我尝试在2d数组中找到最小数字的代码 当我执行此代码时,它会显示" 23"最小的。
我无法找到错误。

public class arraymin {
    public static void main(String args[])
    {
        int arr1[][]=new int[][]{{23,32,10,44},{44,33,22,11}};
        int minvalue=arr1[0][0];
        for(int i=0;i<arr1.length;i++)
        {
            for(int j=0;j<arr1.length;j++)
            {
                if(arr1[i][j]<minvalue)
                {
                   minvalue= arr1[i][j];
                }
            } 
        }
        System.out.println("Min Value is: "+minvalue);
    }
}

6 个答案:

答案 0 :(得分:8)

你的内循环应该是

for(int j=0;j<arr1[i].length;j++)

因为列数不同于行数。

完整代码:

public class arraymin {
  public static void main(String args[])
  {
    int arr1[][]=new int[][]{{23,32,10,44},{44,33,22,11}};
    int minvalue=arr1[0][0];
    for(int i=0;i<arr1.length;i++)
    {
        for(int j=0;j<arr1[i].length;j++)
        {
            if(arr1[i][j]<minvalue)
            {
               minvalue= arr1[i][j];
            }
        } 
    }
    System.out.println("Min Value is: "+minvalue);
  }
}

您当前的代码只检查每行的前两列,因此在23,32,44和33中,23是最小的数字。

答案 1 :(得分:2)

在你的内循环中,你使用:

for(int j=0;j<arr1.length;j++)

但是那些数组更长,因此它只会查看这些数组的前两个元素,使23确实是最小的。

将上述内容更改为:

for (int j = 0; j < arr1[i].length; j++)

答案 2 :(得分:0)

您需要将2. for循环更改为

for(int j=0;j<arr1[i].length;j++)

否则你不会覆盖内部数组的所有元素。

答案 3 :(得分:0)

对于两个维度,你的for循环只会达到arr1.length。内部循环应该达到arr1 [i] .length。

答案 4 :(得分:0)

当您在第二个for循环中写入arr1.length时,它会返回2,因为数组中有两行。所以您需要将条件更改为:

for(int j=0;j<arr1[i].length;j++)

这样它可以穿过所有颜色(4个颜色)。

试试这段代码:

public class arraymin {
 public static void main(String args[])
  {
    int arr1[][]=new int[][]{{23,32,10,44},{44,33,22,11}};
    int minvalue=arr1[0][0];
    for(int i=0;i<arr1.length;i++)
    {
        for(int j=0;j<arr1[i].length;j++)    //change in this line
        {
            if(arr1[i][j]<minvalue)
            {
               minvalue= arr1[i][j];
            }
        } 
    }
     System.out.println("Min Value is: "+minvalue);
   }
}

答案 5 :(得分:0)

您应该将内部循环条件更改为 arr1 [i] .length ,因为 arr1.length 仅返回no。行,所以你的程序将一次遍历2x2矩阵而不是2x4。 23是23,32 |中最小的数字44,33因此它返回23。

**for(int i=0;i<arr1.length;i++)
    {
        for(int j=0;j<arr1[i].length;j++)
        {
            if(arr1[i][j]<minvalue)
            {
               minvalue= arr1[i][j];
            }
        } 
    }**