簡體   English   中英

有沒有辦法獲得隨機整數的 Math.min() ? 爪哇

[英]Is there a way to get the Math.min() for random integers? Java

我目前正在制作一個游戲,我正在嘗試比較屏幕上顯示的最短路徑(這是一個隨機生成的整數路徑)和用戶采用的路徑。 這部分代碼是我嘗試在屏幕上獲取總路徑的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) 的方法

方法 Math.min(int,int) 不適用

(實際和形式參數列表的長度不同)

是的。 正如錯誤所說, 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 (s) 並返回最小值。 喜歡,

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);

使用您認為最易讀的任何一個。

要找到大量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);

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM