簡體   English   中英

size() 正在打印多次

[英]size() is printing multiple times

我試圖弄清楚為什么 arr.size() 打印多次(與大小相同的數字)。

我應該取一個數組和 state,精確到小數點后 6 位,數組的哪個部分是正數、負數或零。 但是,我似乎無法通過多行打印。

class Result {

    public static void plusMinus(List<Integer> arr) {
        int plus = 0;
        int minus = 0;
        int zero = 0;
    
        for (int i = 0; i < arr.size(); ++i) {
            if (i == 0) {
                zero++;
            } else if (i < 0) {
                minus++;
            } else if (i > 0) {
                plus++;
            }
        
        double plusPortion = plus / arr.size();
        double minusPortion = minus / arr.size();
        double zeroPortion = zero / arr.size();
        
        System.out.println(arr.size());
        //System.out.println(plusPortion);
        //System.out.println(minusPortion);
        //System.out.println(zeroPortion);
        }
        
        
    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(bufferedReader.readLine().trim());

        List<Integer> arr = Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
            .map(Integer::parseInt)
            .collect(toList());

        Result.plusMinus(arr);

        bufferedReader.close();
    }
}

解決方案 class 作為挑戰的一部分提供。

將尺寸打印和部分計算移到循環之外,如下所示:

public static void plusMinus(List<Integer> arr) {
    int plus = 0;
    int minus = 0;
    int zero = 0;

    for (int i = 0; i < arr.size(); ++i) {
        if (i == 0) {
            zero++;
        } else if (i < 0) {
            minus++;
        } else if (i > 0) {
            plus++;
        }
    }
    //calculate portions
    double plusPortion = plus / arr.size();
    double minusPortion = minus / arr.size();
    double zeroPortion = zero / arr.size();
    //log results
    System.out.println("Array size:" + arr.size());
    //System.out.println(plusPortion);
    //System.out.println(minusPortion);
    //System.out.println(zeroPortion);   
}

您需要在 for 循環中進行“計算”,然后打印結果。 在您發布的代碼中,您正在為列表的每個步驟/元素打印結果。

暫無
暫無

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

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