-2

Main() メソッド内から GetInputstring というメソッドから値を呼び出して、次の手順に進めようとしています。値 myInt を取得して移動する方法について、私は立ち往生しています。

Main() 内のmyInt (周りに 2 つの * がある場所) は、エラーが発生する場所です。

    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 を渡していないためです。インスタンスを作成せずrefに呼び出すことができるように、メソッドを静的にする必要もあります。Mainpublic 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 に答える