C#呼叫类别问题

时间:2020-07-01 13:38:55

标签: c#

我是C#的新手,我正在尝试解决以下问题:

编写至少包含4种方法的程序。第一种方法应该 显示说明,第二种方法应由用户输入 (名字和课程名称),第三个方法应采用 用户输入(3项考试得分并得到其平均值),以及最后一种方法 是向用户显示消息以及所有用户信息 并将计算结果返回。调用您主体中的4种方法。

我已经编辑了帖子,因为我只需要关注我所遇到的问题。所以我在调用DisplayCalculationAndResult方法时遇到问题。我正在做的是创建一种获取用户输入的方法,在另一种方法中,我正在打印您的信息,但是当我称其正确时,用于结果的方法需要一个参数!好的,我不明白为什么会引发问题,但是我叫另一个方法具有其他参数并且可以> <或因为它是字符串而起作用!?

这就是正在得到的

使用未分配的局部变量“ firstName”

使用未分配的局部变量“ lastName”

使用未分配的局部变量“ courseName”

请有人帮忙。

这是我的代码:

using System;
using System.Security.Cryptography.X509Certificates;

namespace work3
{
    class Work3Calculatore
    {
        static void Main(string[] args)
        {
            
            // Declare Variable
            string firstName, lastName, courseName;
           
            // calculate and Display result
            DisplayCalculationAndResult(firstName, lastName, courseName);
      

            Console.ReadKey();
        }


        public static void AskTheUserForValues()
        {
            //string inputValue; // global variable
            string courseName, firstName, lastName; // needed in this method only
         
            Console.WriteLine(" Please Enter the Your First Name: {0} ");
            firstName = Console.ReadLine();
            //inputValue = Console.ReadLine();
            Console.WriteLine(" Please Enter the Your Last Name: {0}");
            lastName = Console.ReadLine();
            //inputValue = Console.ReadLine();
            Console.WriteLine(" Please Enter the Course Name: {0}");
            courseName = Console.ReadLine();
            //inputValue = Console.ReadLine();
        }


        public static void DisplayCalculationAndResult(string firstName, string lastName, string courseName)
        {
            Console.WriteLine();
            Console.WriteLine(" Your first name is: ");
            Console.WriteLine(" {0:N2 ", firstName);
            Console.WriteLine(" Your last name is: ");
            Console.WriteLine(" {0:N2} ", lastName);
            Console.WriteLine(" Your course is: ");
            Console.WriteLine(" {0:N2}", courseName);
            Console.ReadKey();
        }

    }
}

1 个答案:

答案 0 :(得分:1)

错误:

在您的main方法中,您声明了三个变量,从不为其分配任何内容,然后尝试使用它们:

string firstName, lastName, courseName;
DisplayCalculationAndResult(firstName, lastName, courseName);

错误只是告诉您您无法执行此操作。在使用变量之前,必须为其分配一个值(即使只是null)。例如:

string firstName = null, lastName = null, courseName = null;
DisplayCalculationAndResult(firstName, lastName, courseName);

您的下一步:

看起来像,您打算从AskTheUserForValues方法中获取这些值。但是,有两个问题显而易见:

  1. 您永远不会调用该方法。
  2. 该方法不返回任何内容。它只是设置自己的局部变量,然后结束。

您可以让该方法返回那些值,可能是通过创建一个保存它们的类。假设您为这三个值创建了一个单独的类作为数据结构(我猜是一个好的类名,请适当命名您的名字):

public class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string CourseName { get; set; }
}

然后您的AskTheUserForValues方法可以将这些值作为该类的实例返回:

public static Student AskTheUserForValues() // set the return type
{
    var result = new Student(); // create an instance of the object

    // populate the fields on that instance
    Console.WriteLine(" Please Enter the Your First Name: {0} ");
    result.FirstName = Console.ReadLine();
    Console.WriteLine(" Please Enter the Your Last Name: {0}");
    result.LastName = Console.ReadLine();
    Console.WriteLine(" Please Enter the Course Name: {0}");
    result.CourseName = Console.ReadLine();

    return result; // return the instance
}

然后您的main方法可以通过调用该方法来获得结果:

static void Main(string[] args)
{
    var values = AskTheUserForValues();

    DisplayCalculationAndResult(values.FirstName, values.LastName, values.CourseName);

    Console.ReadKey();
}

作为熟悉类如何作为简单数据结构使用的一项附加练习,从这里尝试修改DisplayCalculationAndResult方法以接受新类的实例,而不是分别接受三个值。