我是Java的初学者,我试图找出为什么我的方法没有返回输入数组中的最大值。我的想法是,当调用方法时,for循环将搜索数组的每个值。然后它开始将第一个值设置为最大值,然后任何大于该值的值将成为此后的最大值。
非常感谢任何帮助!
public double displayLargest (double[][] l) {
for (int x=0; x < l.length-1; x++) {
for (int y=0; y < l[x].length; y++) {
double w = l[0][0];
if (w < l[x][y]) {
x++;
y++;
w = l[x][y];
maxValue = w;
}
}
}
System.out.println("The largest value in the array is: " + maxValue);
return maxValue;
}
答案 0 :(得分:2)
以下方法将返回double
的2D输入数组中的最大值,如果没有值,则返回null
。
public Double displayLargest(double[][] l){
Double maxValue = null;
for (int x=0; x < l.length; x++) {
for (int y=0; y < l[x].length; y++) {
if (maxValue == null || maxValue < l[x][y]) {
maxValue = l[x][y];
}
}
}
System.out.println("The largest value in the array is: " + maxValue);
return maxValue;
}
答案 1 :(得分:0)
试
double maxVal = -Double.MAX_VALUE; // see http://stackoverflow.com/questions/3884793/why-is-double-min-value-in-not-negative
for(int x =0; x<l.length; x++){
for(int y=0; y<l[x].length; y++){
double w = l[x][y];
maxVal = Math.max (maxVal, w);
}
}
System.out.println("The largest value in the array is: " +maxVal);
另见https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#min(double,%20double)
答案 2 :(得分:0)
double max = l[0][0];
//two loops here
if(max < l[x][y])//inside two loops
{
max = l[x][y]
}
您总是将数组的第一个值赋给w,您应该在任何循环之前声明它。否则,您始终将该值与l [0] [0]进行比较。
答案 3 :(得分:0)
我给出了简单的方法。
int[][] array2 =
{{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16,17,18,19}};
int result = Arrays.stream(array2)
.flatMapToInt(h2 -> Arrays.stream(h2))
.min()
.getAsInt();
System.out.println(result);
这是最大
int[][] array2 =
{{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16,17,18,19}};
int result = Arrays.stream(array2)
.flatMapToInt(h2 -> Arrays.stream(h2))
.max()
.getAsInt();
System.out.println(result);
答案 4 :(得分:0)
我会强烈 推荐从有意义的变量名称开始。接下来,我建议您更喜欢for-each
loop而不是传统的for
循环(尤其是在嵌套循环时)。最后,我默认到NaN
,这样你可以处理null
和空数组。像,
public static double displayLargest(double[][] arrayOfArray) {
double maxValue = Double.NaN;
if (arrayOfArray != null) {
for (double[] array : arrayOfArray) { // <-- for each array in arrayOfArray
for (double value : array) { // <-- for each value in the array
if (!Double.isNaN(maxValue)) {
maxValue = Double.max(maxValue, value);
} else { // <-- the first value.
maxValue = value;
}
}
}
}
System.out.println("The largest value in the array is: " + maxValue);
return maxValue;
}