波多野结衣 蜜桃视频,国产在线精品露脸ponn,a v麻豆成人,AV在线免费小电影

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何在Java中找到列表中篩選出的元素的平均值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我想知道某一特定分支機構在某一年的平均銷售額。有一張清單,上面有所有的分店和銷售年限。我嘗試使用IntStream來篩選具有所需年份和分支的元素,但我找不到平均值,indexOfSaleInTheYear.size()中顯示錯誤,并且我不確定平均部件代碼是否正確。請幫幫忙。謝謝。

Scanner avgSale = new Scanner(System.in);
    System.out.println("Please enter the year for average sale: 
");
    int yearEntered = avgSale.nextInt();

    Scanner branchNameForAvg = new Scanner(System.in);
    System.out.println("Please enter the branch name whose average sale is to be found, case sensitive: 
");
    String branchNameEntered = branchNameForAvg.nextLine();

    Stream<Integer> indexOfSalesInTheYear = IntStream.of(0, Sale.allValues.size()).boxed()
            .filter(i -> Sale.allYears.get(i).equals(yearEntered))
            .filter(i -> Sale.allBranches.get(i).equals(branchNameEntered));
    
    int sum = 0;
    for(int j = 0; j < indexOfSalesInTheYear.size(); j++){
        sum += j;
    }
    double avgSaleFinal = sum/indexOfSalesInTheYear.size();

    System.out.println("The average sale for the year " + yearEntered + " is " + avgSaleFinal + ".");
    }

推薦答案

以下是我處理它的方式。不是單獨的值列表、年份列表和分支列表,而是包含以下字段的對象列表:

record Sale(int value, int year, String branch) {
}

這里我使用的是record,但如果您愿意,需要具有可變的Sale實例,或者正在使用Java的早期版本,您可以調整此代碼以使用具有普通getter和setter的類。

List<Sale> sales = List.of(
    new Sale(12, 2020, "east"),
    new Sale(15, 2020, "west"),
    new Sale(13, 2020, "east"),
    new Sale(16, 2020, "west"),
    new Sale(14, 2020, "east"),
    new Sale(17, 2020, "west"),
    new Sale(18, 2021, "east"),
    new Sale(19, 2021, "west"));

double averageOfSales(int year, String branchName) {
    OptionalDouble average = sales.stream()
        .filter(sale -> sale.year() == year)
        .filter(sale -> sale.branch().equals(branchName))
        .mapToInt(sale -> sale.value())
        .average();
    return average.orElseThrow(() ->
        new NoSuchElementException("no matching year and branch"));
}

您可能只想返回OptionalDouble或拋出一個不同的異常;這完全取決于您希望如何處理沒有提供年份和分支機構名稱的情況。在這種情況下,您甚至可能只想使用return 0.0或NaN或-1.0或其他一些標記值。

由于IntStream已有求和或求平均值的方法,因此無需自己對這些值求和或除以值的個數即可得出平均值。

將不同的數據分成獨立的并行結構是新Java程序員的常見模式,但這實際上與面向對象編程甚至抽象數據類型的概念背道而馳。您不需要保持簡單值的單獨集合;您可以發明自己的類型,包括值、年、分行、月、門牌號、郵政編碼,以及要作為正在處理的數據域的一部分建模的任何其他類型。

這篇關于如何在Java中找到列表中篩選出的元素的平均值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Java 中找到 元素 列表中 如何在 平均值 篩選
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定