-4

我要做一个小程序,提示用户测试标记,判断用户是通过还是失败。低于 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

4 回答 4

1

您不需要将这些值传递给它们各自的函数。删除参数并在函数中引入新变量。

testMark = GetTestMark();
result = DetermineResult(testMark);
于 2013-04-08T15:21:41.970 回答
1
  • 使用时尚未分配 testMark 和结果
于 2013-04-08T15:22:20.817 回答
1

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

static void GetTestMark(out double testMark)

“out”指定将在此方法中初始化该值。

然后通过以下方式调用它:

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();

结果是一样的——因为你要返回值,所以没有理由传递它。与上述相同类型的更改也将使其正常工作。

于 2013-04-08T15:22:58.257 回答
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();
        }

    }

}
于 2013-04-08T15:22:50.007 回答