该功能并没有在while循环计数器响应

问题描述 投票:1回答:2

所以,我提出要达到12个等级A while循环。计数器从0开始在Main()方法我称之为功能gradeFunction()但执行后,它不会不进行任何更改计数器。

Program p = new Program();
string name = Console.ReadLine();
int gradesPassed = 12;
int currentGrade = 0;
double totalSumOfGrades = 0;
while(currentGrade <= gradesPassed)
{
    double finalGrade = double.Parse(Console.ReadLine());
    p.gradeFunction(finalGrade, totalSumOfGrades,     currentGrade);
}

被调用的函数:

public void gradeFunction(double finalGrade, double totalSumOfGrades, int currentGrade)
{
    if(finalGrade >= 4.00)
    {
       totalSumOfGrades += finalGrade;
       currentGrade++;
    }

}
c# function while-loop
2个回答
1
投票

就像@Jeremy说,请尝试以下操作:

Program p = new Program();
string name = Console.ReadLine();
int gradesPassed = 12;
int currentGrade = 0;
double totalSumOfGrades = 0;
while (currentGrade <= gradesPassed)
{
    double finalGrade = double.Parse(Console.ReadLine());
    gradeFunction(finalGrade, ref totalSumOfGrades, ref currentGrade);
}
public static void gradeFunction(double finalGrade, ref double totalSumOfGrades, ref int currentGrade)
        {
            if (finalGrade >= 4.00)
            {
                totalSumOfGrades += finalGrade;
                currentGrade++;
            }

        }

我已经加入裁判关键字currentGradetotalSumOfGrades在电话和声明都让变量被正确地更新,我相信是最无冲击的方式来获取代码工作。


2
投票

编码,

    Console.ReadLine();
    double totalSumOfGrades = 0;

    for(var currentGrade = 0; currentGrade <= 12; currentGrade++)
    {
        var finalGrade = double.Parse(Console.ReadLine());
        if (finalGrade >= 4.00)
        {
            totalSumOfGrades += finalGrade;
        }
    }

会更简单,更直接。

© www.soinside.com 2019 - 2024. All rights reserved.