我很难为我的场景制作逻辑,我考虑将数组阵列更具体地称为2D数组。我想在2D数组中找到最大值,我不想在main方法中调用它。我把数组作为匿名,并通过静态数据成员调用max的函数。代码如下。让我知道在二维数组中找到最大的no的逻辑,因为我发现难以与哪个值进行比较数组。代码如下: -
class Max2DArray
{
static int i;
static int j;
static int large;//largest number
int max(int x[][])
{
for(int i=0;i<x.length;i++)
{
for(j=0;j<x[i].length;i++)
{
if(x[i][j]<=???)//what should be the comparison here.
{
??//what should be done here??
}
}
}
return large
}
public static void main(String... s)
{
Max2DArray m1 = new Max2DArray();
int t = m1.max(new int[][]{{20,10,5},
{5,7,6},
{23,31,16}});
System.out.println("the largest number is = "+t);
}
}
答案 0 :(得分:2)
试试这个:
int max(int x[][]){
// Initialize the value to the lowest value
int large = Integer.MIN_VALUE;
for(int i = 0; i < x.length; i++) {
for(j = 0; j < x[i].length; j++) {
// Check if the current value is greater than large
if(x[i][j] > large) {
// It is greater so we keep the new value
large = x[i][j];
}
}
}
return large;
}
使用java 8,它可能只是:
int max(int x[][]){
return Arrays.stream(x).flatMapToInt(IntStream::of).max().getAsInt();
}
答案 1 :(得分:2)
我不打算给你解决,但这是一个算法
答案 2 :(得分:0)
Java 8 one-liner,而不是for for循环:
Arrays.stream(x).flatMapToInt(arr2 -> Arrays.stream(arr2)).max().getAsInt();