0
class Program
{
    public static void Main()
    {
        double[,, ] stats = new double[3, 2, 10];
        string[] players = new string[3];
        int x, y, z;

        players[0] = "Tom Brady";
        players[1] = "Drew Brees";
        players[2] = "Peyton Manning";

        for (x = 0; x < 3; ++x)
        {
            Console.WriteLine("Enter stats for {0}", players[x]);
            for (y = 0; y < 2; ++y)
            {
                Console.WriteLine("Game {0}", y + 1);
                stats[x, y, z] = ***inputstats(stats[x, y, z])***;
            }
        }
    }
    public static double[] inputstats(double[] methodstats)
    {
        methodstats = new double[10];
        Console.WriteLine("Enter pass attempts: ");
        methodstats[0] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter completions: ");
        methodstats[1] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter completion percentage: ");
        methodstats[2] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter total yards: ");
        methodstats[3] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter touchdowns: ");
        methodstats[4] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter interceptions: ");
        methodstats[5] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter rushing yards: ");
        methodstats[6] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter rushing touchdowns: ");
        methodstats[7] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter fumbles: ");
        methodstats[8] = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter QB rating: ");
        methodstats[9] = Convert.ToDouble(Console.ReadLine());
        return methodstats;
    }
}

これが私のコードです。私は非常に初心者であることを覚えておいてください。2 つのゲームで 3 人の異なるプレイヤーにユーザー入力を求めるコンソールを作成しようとしています。ユーザーが入力したすべてのデータを取得したら、ゲーム 1 の統計情報、ゲーム 2 の統計情報、または 2 つのゲームの平均のいずれかを表示するようユーザーに求める機能を追加します。現在、私は入力を取得するだけで立ち往生しています。最適なオーバーロード メソッドの一致に無効な引数が含まれているという行に太字とイタリック体を使用すると、エラーが発生します。私はここで何を台無しにしていますか?私はそれがzにあると確信していますが、10個の統計の配列の3番目の次元にそれを入力する方法がよくわかりません. ハーフ!

4

2 に答える 2

0

より簡単な解決策は次のとおりです。

public static void Main()
{
    double[][][] stats = new double[3][2][10];
    string[] players = new string[3];

    players[0] = "Tom Brady";
    players[1] = "Drew Brees";
    players[2] = "Peyton Manning";   

    for (int player = 0; player < 3; ++player)
    {
        Console.WriteLine("Enter stats for {0}", players[ player ]);
        for (int game = 0; game < 2; ++game)
        {
            Console.WriteLine("Game {0}", game + 1);
            stats[player][game] = inputstats();
        }
    }

public static double[] inputstats()
{
    //same code
}

いくつかのメモ。配列を割り当てることができるように、多次元配列の代わりに配列の配列の配列を使用しましたstats[][](詳細はこちら)。また、より説明的な反復子変数 (ここでは player と game) を使用し、それらをローカルにスコープする必要があります。つまり、forループ宣言でそれらを宣言します。一般に、変数のスコープがより局所的であるほど、より良い結果が得られます。

編集: Kevin DiTraglia によると、配列を に割り当てることができます[,]。とにかく[][][]、Java と C/C++ から来た私にとっては、どうやら明らかに高速で自然です。

于 2013-08-29T17:15:51.807 に答える