簡體   English   中英

數組和for循環的麻煩

[英]Arrays and for loops trouble

我正在做一個數組練習,我幾乎完成了它。我在完成最后一部分時遇到了麻煩。我創建了兩個存儲課程作業點和考試點的數組,然后使用第三個數組來計算模塊結果(由考試和課程作業要點)。 我讓這部分正常工作,並假設我有5個模塊,輸出是5個數字。但是我想計算我的舞台標記,所以如果我有5個模塊,我會得到它們的標記,將它們加在一起,然后將它們除以5.這是我的問題我正在使用for循環,因為這是它將起作用的唯一方法(據我所知),因此,鑒於我已經有了模塊結果,我將使用此for循環來計算階段結果:

for(int i = 0; i < module_result.length; i++)
{
    sum = sum + module_result[i];
    System.out.println(sum/5);
}

我在這個網站上看到了類似的問題,並在答案中使用了代碼。我也可以使用增強的for循環。

因此,鑒於課程array={45,70,60,55,80}和考試array={83,72,45,25,89}我的模塊結果為64,71,60,87 通過使用上面的for循環,可以得到預期的結果:

10
22
32
37
52

所以我得到了我的結果。 是52。但是我不想要其余的數字。 我的問題是我怎樣才能得到那個數字(52)。 我猜想通過使用for循環是不可能的,因為它不可避免地要循環5次而不是一次。 我曾考慮過使用while循環,但是我看不到如何獲得不同的結果。

我不確定我是否完全理解這個問題,但是我認為這是您要追求的目標:

for(int i = 0; i < module_result.length; i++)
{
    sum = sum + module_result[i];
}
System.out.println(sum/5);

您所要做的只是將println語句移出循環(如果我正確理解了問題)。

如果您只想打印出最后一個數字,只需在for循環中執行一個條件,該條件將在長度之前打印出索引,如下所示:

for (int i = 0; i < module_result.length; i++) {
    if (i == module_result.length - 1) {
        // print results
    }
    else {
        // Do calculations
    }
}

好的,這是我的代碼。

public int[] computeResult(int []courseWork,int[] examMarks ){
        int[] module_result = new int[6];
        for(int i=0;i<module_result.length;i++){//CALCULATE EACH MODULE
            module_result[i]= ((courseWork[i] * cw[i]) + (examMarks[i] * (100 -  cw[i]))) / 100;//THIS LINE IS SIMPLY A CONDITION HOW TO CALCULATE A MODULE YOU DON'T NEED TO KNOW WHAT IS HAPPENING INSIDE
}
        int sum = 0;
        for(int i = 0; i < module_result.length; i++)//USE THIS FOR LOOP TO ADD THE MODULES TOGETHER.
        {
            sum = sum + module_result[i];

            // Add this extra line
            // This allows you to only print out the value when you reach the end
            if (i == module_result.length - 1) {
                System.out.println(sum/6);
            }
        }
        return module_result;
        }

但是這是發生的情況-第一個for循環計算模塊結果,例如在輸出控制台中如下所示:64 71 60 31 87 33

接下來的第二個for循環將它們加在一起-第一個是64,下一個循環在71到64處,您得到135,下一個將下一個模塊結果加到135,依次類推60,依此類推直到我得到所有6個模塊的總和在這個示例346中,然后將其除以6得到我的舞台結果。所以我在輸出控制台中只需要346/6。

我當前的代碼正在執行此操作-正在運行第二個循環星,它已經知道我的模塊結果(已經計算出),因此開始運行-第一個是64,將其除以6得到10,然后循環添加71到64得到135並除以6,依此類推,直到達到數字346並除以6。所以我得到以下輸出:10 22 32 37 52 57

我不需要10、22、32、37和52,它們沒有任何意義。我只需要57。您的解決方案將給我帶來以下結果:0 0 0 0 0 57

它仍然給出不必要的數字。

暫無
暫無

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

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