0

/*これは、C# を使用して配列に値を追加し、それらを出力するだけの単純なコードです。しかし、これを行うにはエラーが発生します。どのようなエラーが考えられますか? */

        int size = 0, k = 0;
        Console.WriteLine("Enter size of array: ");            
        size = Console.Read();
        string[] array = new string[size];  

        for (int i = 0; i < size; i++)
        {
            Console.WriteLine("Enter at index: {0}", i);
            array[i] = Console.ReadLine();                
        }

        foreach (string s in array)
        {
            Console.WriteLine("Value at index: {0}", k++ + " = " + s);
        }
4

6 に答える 6

2
k++

foreachループで機能します。


私は実際に書くだけです:

Console.WriteLine("Value at index: {0} = {1}", k++, s);
于 2013-02-20T22:21:50.997 に答える
0

2つのこと:

1)string [] array = new string [size]; コンパイルされない可能性が高いため、負の数を取得できます

2)Console.WriteLine( "インデックスの値:{0}"、k + "=" + s); -> Console.WriteLine( "インデックスの値:{0}" + k + "=" + s);

于 2013-02-20T22:22:38.237 に答える
0

以下に示すように、foreachループ内のコードを変更することで、目的を達成できると思います。

Console.WriteLine("Value at index {0}: {1}", k++, s);

(ジョーはすでに彼の答えにもこの解決策を持っているようです)。

{0}formatstringパラメーターの後のConsole.WriteLineメソッドの最初のパラメーターの値のプレースホルダーです。 {1}は、フォーマット文字列パラメーターの後のConsole.WriteLineメソッドの2番目のパラメーターの値のプレースホルダーです。

foreachループの各反復でk++の値をインクリメントするために使用しています。k

foreachループは、IEnumerableオブジェクト(より具体的にはIEnumerable<int>、この場合はオブジェクト)を単純に反復処理します。オブジェクトの機能はIEnumerable、コレクション内の各アイテムを単純に提供することです。「インデックス」の概念がないため、各アイテムにインデックスを関連付けたい場合は、自分で管理する必要があります。

配列やリストなどの一部のコレクションでは、常にそれらの構造内に存在する順序でアイテムを取得することに注意してください。ただし、IEnumerableandIEnumerable<T>インターフェイス自体は、特定の順序でアイテムを取得すること、または2回目にループした場合に同じ順序でアイテムを取得することを必ずしも保証するものではありません。int[]反復の順序は、基礎となる実装(この場合は整数()の配列)によって決定されます。

于 2013-02-20T22:31:21.257 に答える
0

Console.Read()が問題を引き起こしていると思います。代わりに、ReadLine()を試して、必要に応じてIntに変換し、kをインクリメントしてください。

 int size = 0, k = 0;
 Console.WriteLine("Enter size of array: ");
 size = Convert.ToInt32(Console.ReadLine());
 string[] array = new string[size];

 for (int i = 0; i < size; i++)
 {
     Console.WriteLine("Enter at index: {0}", i);
     array[i] = Console.ReadLine();
 }

 foreach (string s in array)
 {
     Console.WriteLine("Value at index: {0}", k + " = " + s);
     k++;
 }

 Console.ReadLine();
于 2013-02-20T22:32:56.520 に答える
0

これは動作します(テスト済み):

        int size = 0, k = 0;
        Console.WriteLine("Enter size of array: ");
        size = int.Parse(Console.ReadLine());
        string[] array = new string[size];

        for (int i = 0; i < size; i++)
        {
            Console.WriteLine("Enter at index: {0}", i);
            array[i] =  Console.ReadLine();
        }

        foreach (string s in array)
        {
            Console.WriteLine("Value at index: {0} = {1}", k++, s);
        }

        Console.Read();
于 2013-02-20T22:50:28.337 に答える
0

なぜあなたは使用するのConsole.Read()ですか?入力ストリーム内の各文字に対応する整数を読み取りますが、Enter キーを押すまで読み取りません (それ自体で one13と oneの 2 つの整数が送信されます10)。

たぶん、Console.ReadLine()代わりに使用する必要がありますか?

于 2013-02-20T22:35:13.290 に答える