-2

我正在尝试从 Main() 方法内部调用 GetInputstring 的方法调用一个值,然后继续执行下一步。我对如何获得价值 myInt 并继续前进感到困惑。

Main() 中的myInt(它有两个 * 周围)是它得到错误的地方。

    static void Main(string[] args)
    {

        GetInputstring(**myInt**);

        if (**myInt** <= 0)
        {
            Write1(**myInt**);
        }
        else
        {
            Write2(**myInt**);
        }
        Console.ReadKey();
    }

    public int GetInputstring(int myInt)
    {
        string myInput;
        //int myInt;

        Console.Write("Please enter a number: ");
        myInput = Console.ReadLine();

        myInt = Int32.Parse(myInput);
        return myInt;            
    }

    static void Write1(int myInt)
    {
        while (myInt <= 0)
        {
            Console.WriteLine("{0}", myInt++);
        }
    }

    static void Write2(int myInt)
    {
        while (myInt >= 0)
        {
            Console.WriteLine("{0}", myInt--);
        }
    }
4

2 回答 2

1

MyInt是你的参数(你传递给你的方法的值)并且它没有被初始化。此外,您没有捕捉到您的返回值(应该是 myInt)

您还需要使您的方法静态以便从静态方法调用它们,或者您创建类的实例并在其上调用方法

这就是你得到你想要的东西的方式:

static void Main(string[] args)
{

    int myInt = GetInputstring(); //MyInt gets set with your return value 

    if (myInt <= 0)
    {
        Write1(myInt);
    }
    else
    {
        Write2(myInt);
    }
    Console.ReadKey();
}

public static int GetInputstring() //Deleted parameter because you don't need it.
{
    string myInput;
    //int myInt;

    Console.Write("Please enter a number: ");
    myInput = Console.ReadLine();

    int myInt = Int32.Parse(myInput);
    return myInt;            
}
于 2013-10-13T16:01:49.577 回答
0

您需要初始化myInt变量并将其存储在本地或全局范围内。使用此变量,您将需要使用从中获得的值对其进行设置,GetInputString()因为您没有将 int 作为 a 传递,ref 因此不会在方法中分配它。您还需要使您的方法静态,以便可以在Main不创建实例的情况下调用它们,例如:public static int GetInputstring()

int myInt = 0;
myInt = GetInputstring(myInt);

if (myInt <= 0)
{
    Write1(myInt);
}
else
{
    Write2(myInt);
}
Console.ReadKey();

或者(最好),您可以GetInputString()分配该值,因为它不需要myInt作为参数传递。

static void Main(string[] args)
{
    int myInt = GetInputstring();

    if (myInt <= 0)
    {
        Write1(myInt);
    }
    else
    {
        Write2(myInt);
    }
    Console.ReadKey();
}

public static int GetInputstring()
{
    Console.Write("Please enter a number: ");
    string myInput = Console.ReadLine();
    return Int32.Parse(myInput);            
}
于 2013-10-13T16:05:11.820 回答