我想找到数组中最小的数字
当我执行此代码时,它会显示" 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);
}
}
答案 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];
}
}
}**