帮我解决这个错误
本文关键字:错误 解决 | 更新日期: 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();
}
}
}