0

私のコードの2つの問題:

1- Main() の Console.Writeline で奇妙な構文エラーが発生し、右中括弧 '}' が欠落していると思われます

2- Main() の後の最初のメソッドがわかりません。配列の要素を書き込む単純な void メソッドのはずですが、Visual Studio はエラーからクラスまたは名前空間のいずれかであると認識しているようです。

私が失敗した場所を誰か見つけられますか?

public static void Main(string[] args)
{
    //static array for winning[6], empty for player[6], empty for matching[6]
    int [] winning = new int [6] {2, 4, 6, 9, 1, 3};
    int [] player = new int [6];
    int [] matching = new int [6];
    int inValue;

    //Input loop
    Console.WriteLine("Please enter six lotto numbers, between 1 and 9");

    for (int i = 0; i < player.Length; i++)
    {
        inValue = Console.Read();
        if (inValue < 1 || inValue > 9) //Validate for int 1-9
        {
            Console.WriteLine("Please enter a whole number between 1 and 9");
        }
        winning[i] = inValue;
    }

    //Output
    Console.WriteLine("The winning numbers were:");
    DisplayArray(int[] winning);
    Console.WriteLine("Your numbers were:");
    DisplayArrayContents(int[] player);
    Console.WriteLine("You had " + MatchCount() + " matches.");
    Console.WriteLine("Your matching numbers are:")
    DisplayArrayContents(int[] matching);
    Console.Read();
}

//Empty method to display arrays
static void DisplayArray(params int[] args)
{
    for (int i = 0; i < args.Length; i++)
    {
        Console.Write({0} + "\t", array[i]);
    }
    Console.Write("\n");
} 

編集:みんなありがとう!そこにあるいくつかの変数とメソッドの名前を変更するのを忘れていましたが、主な問題は欠落していました。Main() の引数として不要なデータ型。

4

3 に答える 3

2
//Empty method to display arrays
static void DisplayArray(params int[] args)

とにかく配列を渡しているので、これは であるstatic void DisplayArray(int[] array)必要があり、varargs のパフォーマンス ヒットは必要ありません (これは、パラメーターを として宣言するときに行うことですparams int[] args


Console.Write({0} + "\t", array[i]);

このようにフォーマット文字列を連結しません。あなたはただ使うことができます:

Console.Write("{0}\t", array[i]); 

また、実装array内で定義されていません。DisplayArray()パラメータに名前を付けましたargs


DisplayArrayContents(int[] matching);

メソッドがなくDisplayArrayContents、渡すものの型を再度指定する必要はありません。コンパイラは、呼び出しの時点で型の安全性を保証できるため、名前で渡すだけです。

DisplayArray(matching);

ここにセミコロンがありません:

Console.WriteLine("Your matching numbers are:")

入力ループでは、プレーヤーの入力をwinning配列に書き込んでいます。これは、プレーヤーが入れたばかりのおかげで、常に当選番号を選択することになることを意味します。

あなたはおそらく望んでいますplayer[i] = inValue;


inValue = Console.Read()

これは、おそらく期待していることをしません。だけでプログラムを試してください:

var inValue = Console.Read();
Console.WriteLine(inValue);

コンソールで 1 を入力します。値が返される1ため、とは異なる出力が得られます。Console.Read()char

との組み合わせによりConsole.ReadLine()、目的の場所に移動できる可能性があります。Int32.Parse()String.Split()

于 2015-05-07T15:54:44.423 に答える
0

メソッドを呼び出すときに、パラメーターと共に型を渡さないでください。したがって、たとえば、これらのエラーをすべて修正するDisplayArray(int[] winning);だけで問題ありません。DisplayArray(winning);

于 2015-05-07T15:38:52.130 に答える