在这里帮我解决这个错误

时间:2013-04-08 15:19:36

标签: c#

我必须制作一个小程序,提示用户测试标记并确定用户是否通过了。小于50的测试标记是失败的。

这是我的代码。它给了我2个错误(其中有星星。)

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

namespace Prac6Question2
{
    class Program
    {
       static void Main(string[] args)
        {
            double testMark;
            string result;

            testMark = GetTestMark(*testMark*);
            result = DetermineResult(testMark, *result*);
            Display(testMark, result); 

        }

        static double GetTestMark(double testMark)
        {
            Console.WriteLine("Your test result: ");
            testMark = double.Parse(Console.ReadLine());
            return testMark;

        }

        static string DetermineResult(double testMark, string result)
        {
            if (testMark < 50)
                result = "Fail";
            else
                result = "Pass";

            return result;

        }

        static void Display(double testMark, string result)
        {
            Console.WriteLine("Your test result: {0}", result);
            Console.ReadLine();
        }

    }

}

请帮忙。谢谢。

4 个答案:

答案 0 :(得分:1)

您无需将这些值传递给各自的功能。删除参数并在函数中引入新变量。

testMark = GetTestMark();
result = DetermineResult(testMark);

答案 1 :(得分:1)

  • testMark&amp;使用它们时尚未分配结果

答案 2 :(得分:1)

为了让GetTestMark更改调用者范围内的值,您需要通过引用传递double,即:

static void GetTestMark(out double testMark)

&#34; out&#34;指定该值将在此方法中初始化。

然后通过以下方式调用:

GetTestMark(out testMark);

但是,由于您要返回该值,因此根本不需要传递该值:

static double GetTestMark()
{
   double testMark; // Declare a local
   Console.WriteLine("Your test result: ");
   testMark = double.Parse(Console.ReadLine());
   return testMark;
}

通过以下方式致电:

testMark = GetTestMark();

结果是相同的 - 因为您返回值,没有理由通过它。与上述相同类型的更改也会使其正常工作。

答案 3 :(得分:0)

很简单,应该删除已加星标的内容。您正在传递一个您不使用的变量,编译器很可能抱怨未初始化的变量

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

namespace Prac6Question2
{
    class Program
    {
       static void Main(string[] args)
        {
            double testMark;
            string result;

            testMark = GetTestMark();
            result = DetermineResult(testMark);
            Display(testMark, result); 

        }

        static double GetTestMark()
        {
            double testMark;
            Console.WriteLine("Your test result: ");
            testMark = double.Parse(Console.ReadLine());
            return testMark;

        }

        static string DetermineResult(double testMark)
        {
            string result;
            if (testMark < 50)
                result = "Fail";
            else
                result = "Pass";

            return result;

        }

        static void Display(double testMark, string result)
        {
            Console.WriteLine("Your test result: {0}", result);
            Console.ReadLine();
        }

    }

}