如何显示列表中的最小值和最大值?

时间:2019-05-01 21:19:01

标签: java arrays list max minimum

我需要显示列表中的最小和最大当前价格,但是我只能在最后显示数字

public StockPrice() {
    char startChar = 'A';
    String tmpSymbol = null;
    int startPrice = 0;
    int priceRightNow = 0;
    for (int idx = 0; idx < MAX_STOCKS; ++idx) {

        tmpSymbol = "" + (char) (startChar + idx) + (char) (startChar + idx + 1) + (char) (startChar + idx + 2);

        startPrice = ThreadLocalRandom.current().nextInt(minStockPrice, maxStockPrice + 1);

        priceRightNow = ThreadLocalRandom.current().nextInt(minStockPrice, maxStockPrice + 1);

        myStocks[idx] = new Stock(tmpSymbol, startPrice, priceRightNow);
        System.out.println(myStocks[idx]);

        System.out.println();

    }
    int[] val = {priceRightNow};
    List<Integer> myStocks = new ArrayList<Integer>();
    for (Integer number : val ) {

        myStocks.add(number);
    }

    System.out.println("The current lowest stock price is  "  + tmpSymbol +Collections.min(myStocks));
    System.out.println("The current highest stock price is  "+ tmpSymbol +Collections.max(myStocks));
}

2 个答案:

答案 0 :(得分:0)

您正在覆盖变量。.collections.min,max应该使您的min,max值不在列表中。

public class Test {

    public static void main(String args[]) {

        ArrayList<Integer> integerList = new ArrayList<>();
        integerList.add(10);
        integerList.add(1);
        integerList.add(12);

        System.out.println("MIN : "+Collections.min(integerList));
        System.out.println("MAX : "+Collections.max(integerList));

    }
}

此示例代码将使您获得以下输出。

MIN : 1
MAX : 12

答案 1 :(得分:0)

您的val数组包含最后一个priceRightNow。您在上一个循环迭代中所做的一切都不相关。然后,对ArrayList的调用将创建一个新的空列表,并将val的(唯一)值添加到该列表中。因此,该列表的最大值和最小值为最后一个priceRightNow