首页 > 解决方案 > C# 当我尝试在我的最终方法中调用变量中的值时,它们被设置为 0。它们在之前被调用时正确显示

问题描述

这是我除了计算器之外的第一个程序,试图构建一些东西来跟踪一周中的工作时间。

public class Calculation
{
    public static int realWorkDay;
    public static float realHours;
    public static string jobDone, workDayInput, workHoursInput, workMonthInput;
    public static bool inputCorrect, dayInputCorrect;

   public static void GetHoursInput() //Function to gather information on the Hours worked
    {
        Console.WriteLine("What hours did you work on this day?");
        string workHoursInput = Console.ReadLine();
        bool inputCorrect = float.TryParse(workHoursInput, out float realHours);
        if (inputCorrect)
        {
            Console.WriteLine(realHours + " Hours");
        }
        else
        {
            Console.WriteLine("That is an invalid selection.");
            GetHoursInput();
        }
      
    }

    public static void GetMonthInput()
    {
        Console.WriteLine("What Month is this for? Example. May, Oct ");
        string workMonthInput = Console.ReadLine();

        if(workMonthInput.Length == 3) 
        {
            Console.WriteLine("The Month of " + workMonthInput);
        }
        else 
        {
            Console.WriteLine("That is an invalid selection.");
            GetMonthInput();
        }
       
    }

    public static void GetDateInput()
    {
        Console.WriteLine("What day is this for");
        string workDayInput = Console.ReadLine();
        
        bool dayInputCorrect = Int32.TryParse(workDayInput, out int realWorkDay);
        if(dayInputCorrect)
        {
          Console.WriteLine(realWorkDay);
        }
        else 
        {
            Console.WriteLine("That is an invalid selection.");
            GetDateInput();
        }
        
    }

    public static void GetJobDone() 
    { //THIS SHOWS UP AS "On 0 , You worked 0" IN CONSOLE
        Console.WriteLine("On " + workMonthInput + " " + realWorkDay + ", You worked " + realHours + " Hours");
        Console.WriteLine("What did you do on this day");
        jobDone = Console.ReadLine();
    }

标签: c#variablesmethods

解决方案


在这一行:

string workMonthInput = Console.ReadLine();

您正在声明一个名为 的新局部变量workMonthInput。它恰好与您命名的字段具有相同的名称workMonthInput,但它是一个不同的变量。

如果您打算分配给现有字段,只需删除类型声明:

workMonthInput = Console.ReadLine();

推荐阅读