有没有办法获取随机整数的 Math.min()?爪哇岛



我目前正在制作一个游戏,我正在尝试比较屏幕上显示的最短路径(这是随机生成的整数路径(和用户采用的路径。这部分代码是我尝试获取屏幕上总路径Math.min()的代码:

int path1 = randomNum3 + randomNum8;
int path2 = randomNum2 + randomNum7;
int path3 = randomNum + randomNum6;
int path4 = randomNum3 + randomNum5 + randomNum7;
int path5 = randomNum2 + randomNum5 + randomNum8;
int path6 = randomNum + randomNum4 + randomNum7;
int path7 = randomNum2 + randomNum4 + randomNum6;

int caminoMasCorto = Math.min(path1, path2, path3, path4, path5,
path6, path7);

向我显示的错误是这样的:

找不到适合 min(

int,int,int,int,int,int,int,int,int( 的方法方法Math.min(int,int(不适用

(实际参数列表和正式参数列表的长度不同(

要找到许多int变量的最小值,请使用:

int caminoMasCorto = IntStream.of(path1, path2, path3, path4, path5,
path6, path7).min().getAsInt();

如果您没有使用 Java 8+,则可以执行以下操作:

int caminoMasCorto = path1;
for (int value : new int[] { path2, path3, path4, path5, path6, path7 })
caminoMasCorto = Math.min(caminoMasCorto, value);

是的。正如错误所说,Math.min(int, int)需要两个参数。改变

int caminoMasCorto = Math.min(path1, path2, path3, path4, path5,
path6, path7);

int caminoMasCorto = Math.min(path1, Math.min(path2, 
Math.min(path3, Math.min(path4, Math.min(path5, Math.min(path6, path7))))));

(如安德烈亚斯所指出的(

int caminoMasCorto = Math.min(Math.min(Math.min(Math.min(Math.min(Math.min(
path1, path2), path3), path4), path5), path6), path7);

或者,您可以编写自己的min函数,该函数采用任意数量的int并返回最小值。喜欢

private static int myMin(int... vals) {
if (vals == null || vals.length < 1) {
throw new RuntimeException("No values");
}
int t = vals[0];
for (int i = 1; i < vals.length; i++) {
t = Math.min(t, vals[i]);
}
return t;
}

然后使用

int caminoMasCorto = myMin(path1, path2, path3, path4, path5,
path6, path7);

使用您认为最具可读性的任何一种。

Java的Math.min接受两个参数。要将其扩展到多个数字,请尝试此方法:

public int minExtension (int... numbers) {
int minimum = numbers[0];
for (int number : numbers) {
minimum = Math.min(number, minimum)
}
return minimum
}

这样称呼它

int caminoMasCorto = minExtension (path1, path2, path3, path4, path5, path6, path7);

最新更新