在C#中没有收到正确的输出

时间:2014-05-26 02:47:19

标签: c# loops

所以我正在做家庭作业,由于某种原因,我的变量没有给我正确的输出。使用6,7,8,9,10作为判断分数和1.2作为难度,我应该得到9.6回到最后的潜水分数..但由于某种原因我收到8 ..任何想法?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rickerson_Bret_iLab3
{
class Program
{
    static void Main(string[] args)
    {
        string wouldContinue;

        do
        {

            string diverName;
            string diverCity;
            double degreeofDiff = 0;
            double scoreJudge = 0;
            bool validDegree = false;
            double totalJudgeScore = 0;
            int i = 1;
            double highJudgeScore = 0;
            double lowJudgeScore = 0;

            Console.WriteLine("Enter the diver's name...");
            diverName = Convert.ToString(Console.ReadLine());

            Console.WriteLine("Enter the diver's city...");
            diverCity = Convert.ToString(Console.ReadLine());

            while (validDegree == false)
            {
                Console.WriteLine("Enter the degree of difficulty for this dive...");
                degreeofDiff = Convert.ToDouble(Console.ReadLine());

                if (degreeofDiff < 1.00 || degreeofDiff > 1.67)
                {
                    Console.WriteLine("Re-enter a valid degree of difficulty (Valid Range: 1.00 - 1.67");
                    validDegree = false;
                }
                else
                {
                    validDegree = true;
                }
            }

            while (i < 6)
            {
                Console.WriteLine("Enter the judge #" + i + " score...");
                scoreJudge = Convert.ToDouble(Console.ReadLine());

                if (scoreJudge > 10 || scoreJudge < 1)
                {
                    bool validScore = false;

                    while (validScore == false)
                    {
                        Console.WriteLine("Enter a valid Judge Score for judge #" + i + "...");
                        scoreJudge = Convert.ToDouble(Console.ReadLine());

                        if (scoreJudge > 10 || scoreJudge < 1)
                        {
                            validScore = false;
                        }
                        else
                        {
                            validScore = true;
                        }
                    }

                }

                if (scoreJudge > highJudgeScore)
                {
                    highJudgeScore = scoreJudge;
                    Console.WriteLine(highJudgeScore);
                }

                if (scoreJudge < lowJudgeScore)
                {
                    lowJudgeScore = scoreJudge;
                    Console.WriteLine(lowJudgeScore);
                }

                i++;
                totalJudgeScore = totalJudgeScore + scoreJudge;
                Console.WriteLine(totalJudgeScore);
                Console.WriteLine(scoreJudge);
            }

            double highLow = highJudgeScore + lowJudgeScore;
            totalJudgeScore = totalJudgeScore - highLow;
            totalJudgeScore = (totalJudgeScore / 3) * degreeofDiff;

            Console.WriteLine("Diver: " + diverName);
            Console.WriteLine("Diver City: " + diverCity);
            Console.WriteLine("Dive Degree of Difficulty: " + degreeofDiff);
            Console.WriteLine("Dive Score: " + totalJudgeScore);

            Console.WriteLine("Would you like to enter another diver? Enter y for yes or n for no...");
            wouldContinue = Convert.ToString(Console.ReadLine());
            wouldContinue.ToUpper();




        } while (wouldContinue == "Y");
    }
}

}

我想补充一下。我试图验证它是否正确接受数据,因为它显示变量,或者在变量被操作的任何时候...它似乎是正确的,但最后是我遇到变量“totalJudgeScore”的问题“

Edit2:我发现由于某种原因,代码没有正确地遵循最后2个if语句。它每次都将“scoreJudge”存储到“highJudgeScore”和“lowJudgeScore”并错误地覆盖数据。

2 个答案:

答案 0 :(得分:2)

你的lowJudgeScore在设置为0之后永远不会被设置。你应该将它默认设置为10或更高,以便正确设置它。

试试这个:

double lowJudgeScore = 10.0;

答案 1 :(得分:1)

在循环期间,lowJudgeScore永远不会被设置。添加此else块并初始化lowJudgeScore ...

                if (scoreJudge < lowJudgeScore)
                {
                    lowJudgeScore = scoreJudge;
                    Console.WriteLine(lowJudgeScore);
                }
                //Add this else block to initialize the low score variable
                else if (lowJudgeScore == 0)
                {
                    lowJudgeScore = scoreJudge;
                }