帮我解决这个错误

本文关键字:错误 解决 | 更新日期: 2023-09-27 18:08:09

我必须编写一个小程序,提示用户测试标记并确定用户是否通过或失败。考试分数低于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();
        }
    }
}

请帮助。谢谢。

帮我解决这个错误

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

testMark = GetTestMark();
result = DetermineResult(testMark);
  • testMark,当您使用它们时,结果尚未分配

为了让GetTestMark在调用者的作用域中改变值,您需要通过引用传递double,即:

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

Result也是同样的方法——因为你返回的是值,所以没有理由传递它。上述相同类型的更改也会使其正常工作。

很简单,您应该删除加了星号的内容。您传入了一个不使用的变量,编译器很可能会抱怨未初始化的变量

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