0

私は約1年前からC#プログラミングを行っていますが、通常、どこかで詳細を見落とすことでこのような問題に直面します。もう一度やり直しているような気がしますが、問題が解決しないようです。'input'という名前の文字列変数があります。'Main'クラスの'if'ステートメントで次のように宣言しました。
string input = Console.Readline();
別の'if'ステートメントとして、同じ'Main'クラスで次のように記述しました。

    if (input != null || input != 0)
    {
        //I have code for this part, but it is irrelevant 
    }
    else
    {
        //And this part, but it is also irrelevant
    }

私の問題は、MonoDevelopが2番目の'if'ステートメントの'input'変数の両方を強調表示し、'名前inputが現在のコンテキストに存在しない'と言っていることです。私は何かを見落としているような気がします、どんな助けもいただければ幸いです。私の完全なコードはこれです:

using System;

namespace ConsoleTest
{
class MainClass
{
    public static string version = "0.0.1";
    public static string precursor = "/:>";

    public static void Main (string[] args)
    {
        Console.Write ("Console Test ");
        Console.WriteLine (version);
        Console.Write (precursor);
        string start = Console.ReadLine ();

        if (start == "start") {
            while (true) {
                Console.WriteLine ("Started");
                Console.Write (precursor);
                string input = Console.ReadLine ();
            }
        } else {
            Environment.Exit (0);
        }

        if (input != null || input != 0) {
            //Code
        } else {
            Console.WriteLine("Error: Input null");
        }

    }
}
}
4

4 に答える 4

2

最初のifステートメントの前に入力変数を宣言します。内部で宣言されているため、ifステートメント内(またはこの場合はループ内)でのみ使用できます。

于 2013-03-26T13:36:45.403 に答える
1

inputwhile loopあなたの最初のあなたの内側の範囲にのみ存在しますif statement

外に移動します。

string input = new string();

if (start == "start") {
    while (true) 
    {
            Console.WriteLine ("Started");
            Console.Write (precursor);
            input = Console.ReadLine ();
    }
}
于 2013-03-26T13:37:53.500 に答える
0

より多くのコードが必要ですが、文字列をintと比較しようとしていることが原因である可能性があります。おそらくあなたは探していました

input.equals("0")?

編集:コードを見て、ifステートメントで変数を初期化しました。関数の最初に初期化する必要があります。nullに設定しただけでも。

public static void Main (string[] args)
{
    Console.Write ("Console Test ");
    Console.WriteLine (version);
    Console.Write (precursor);
    string start = Console.ReadLine ();
    string input = null;

    if (start == "start") {
        while (true) {
            Console.WriteLine ("Started");
            Console.Write (precursor);
            input = Console.ReadLine ();
        }
    } else {
        Environment.Exit (0);
    }

    if (input != null || !input.equals("0")) {
        //Code
    } else {
        Console.WriteLine("Error: Input null");
    }

}
于 2013-03-26T13:34:53.077 に答える
0

文字列入力はループ内で宣言されます。そのため、このループの後でそれはわかりません。ループの外側で宣言し(そして、nullまたはに開始しString.Empty)、ループの内側に塗りつぶします

于 2013-03-26T13:35:46.220 に答える