1

そのため、コードにいくつか問題があります。まず、すべての配列を出力するこの問題があります。私はコーディングを始めてまだ 12 日間しか経っていませんが、私の大学の学習に対する考え方のために、私の先生は C# コーディングの基本をいくらか飛ばしてしまいました。そして、アルファベット順に並んでいないことを知りました.....

    static int inputPartInformation(string[] pl)
    {
        int i = 0;

        do
        {
            Console.Write("Enter a Name: ");
            //for the player
            pl[i] = Console.ReadLine();

        }
        while (pl[i++].CompareTo("Q") != 0);
        //if they write Q for the player it will quit
        return i - 1;
    }

    static void Main(string[] args)
    {
        String[] players = new String[100];
        Array.Sort(players);
        // Sort array.

        //defines players in this new instance

        var count = inputPartInformation(players);

        //for the portion of the code that handles the input

        //calculates the average score

        Console.WriteLine("List of People in Order: {0}, {1}, {2}, {3}, {4}, {5}, {6},", players);
        Console.ReadLine();
    }
}

}

4

4 に答える 4

3
  • 名前が入力される前に並べ替えています。それは何もしません。
  • パラメータ参照などの固定された複数項目リストを使用して単一項目を印刷して{0}, {1},{2}います。それは機能しません。機能したとしても、出力は最初の 7 項目に制限されます
  • ソートするアイテムの数がわかりません。void inputPartInformation(string[] pl)return に変更してcount(つまりi-1)、使用するArray.Sort(players, 0, count);

複数の文字列を単一の文字列に変換する最も簡単な方法は、次を使用することstring.Joinです。

Console.WriteLine("List of People in Order: {0}", string.Join(", ", players.Take(count)));
于 2012-08-16T01:48:43.423 に答える
1

これを試してみてください、それはうまくいきますが、最初にAPIについて勉強してみてください

static int inputPartInformation(string[] pl)
    {

        int i = 0;
        String temp;
        while (true)
        {
            Console.Write("Enter a Name: ");
            temp=Console.ReadLine();
            if (temp=="Q")
                break;
            else pl[i++] = temp;
        }
        return i;

    }

    static void Main(string[] args)
    {

        String[] players = new String[100];

        int size=inputPartInformation(players);

        for (int i = 0; i <= size; i++)
            Console.WriteLine(players[i]);


    }
}
于 2012-08-16T02:04:28.633 に答える
1

まず、入力が受け入れられて配列に挿入されるまで「Q」をテストしないため、「Q」が入力リストに追加されます。これを作り直す 1 つの方法は、入力名を一時変数に保持し、それを "Q" でテストし、それが他のものである場合にのみ配列に追加することです。ループ内で、入力/テストを次のように変更します。

   bool enteringNames=true;
   do{
    String nextName = Console.ReadLine();
    if (nextName.CompareTo("Q")==0)
    {
       enteringNames=false;
    }
    else
    {
       p[i]=nextName;
    }
    i++;
  }
  while(enteringNames);

これは、仕事を成し遂げる方法の 1 つにすぎません。固定された 100 エントリの配列は、これを行うための最も堅牢な方法ではないことに注意してください...いくつの名前が入る可能性があるかは決してわかりません!

さて、最後の WriteLine は少し奇妙ですが、その部分は自分で理解できると思います - 配列を繰り返し処理するか、すべての文字列を結合するだけです:)

次に、実際にデータをロードするために inputPartInformation(players) を呼び出す前にArray.Sort(players) を呼び出すため、並べ替えが機能しません。つまり、データなしで並べ替えを行っているのです。inputPartInformation への呼び出しの後に Array.Sort 呼び出しを移動します。

お役に立てれば!

于 2012-08-16T01:54:54.783 に答える
0

Q を配列に割り当てているため、結果に Q が表示されます。

たとえば、関数を書き直して、値を割り当てる前に値をチェックします。

static void inputPartInformation(string[] pl)
    {
        int i = 0;
        do
        {
            Console.Write("Enter a Name: ");
            //for the player
            newStrInput = Console.ReadLine();

if (newStrInput == "Q")
break;//if they write Q for the player it will quit

pl[i]=newStrInput;
i++;
     }
        while (i>-1);//infinite loop        

    }
于 2012-08-16T01:56:30.323 に答える