3

ここでは、いくつかの基本的な C# プログラミングを試みます。このプログラムは、ユーザーに配列のサイズを尋ね、次に配列を埋め、配列を出力し、最後に配列を埋めるために使用した数値の平均を見つけることを意図しています。プログラムは現在コンパイルされません。参考書なしでこれを行うのはこれが初めてなので、誰かが私に欠けているものを説明してもらえますか? ありがとう。編集:配列内の数値の平均を見つけることに関する部分を除いて、すべてのプログラムが機能します。また、製品レベルのコーディングには不向きなばかげた間違いがあれば、私に知らせてください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _9_21_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("enter the amount of numbers you would like to find the average of: ");
            int arraylength = Int32.Parse(Console.ReadLine());
            int[] AverageArray = new int[arraylength];

            //filling the array with user input
            for (int i = 0; i < AverageArray.Length; i++)
            {
                Console.Write("enter the numbers you wish to find the average for: ");
                AverageArray[i] = Int32.Parse(Console.ReadLine());

            }
            //printing out the array 
            Console.WriteLine("here is your array: ");
            for(int i=0; i < AverageArray.Length; i++)
            {
                Console.WriteLine(AverageArray[i]);
            }
            Console.WriteLine(FindAverage);
        }

    }
    //Method to find the average is another class for learning porpoises
    class Calcs
    {
        public static double FindAverage(int[] averageNumbers);
        int arraySum=0;

        for(int i =0; i < averageNumbers.Length; int i++)
            arraysum+=arraysum;

       return double average = arraysum/averageNumbers.Length;


    }

}
4

4 に答える 4

4

ここにはいくつかのエラーがあります:

for ループで「int」を 2 回指定してはならず、適切な数を追加する必要があります。

// for(int i =0; i < averageNumbers.Length; int i++)
// Remove the extra "int", and 
for(int i =0; i < averageNumbers.Length; i++)
{
      // Add in averageNumbers[i], not arraysum
      arraysum += averageNumbers[i];
}

また、 のセミコロンを削除しCalcs.FindAverage、中かっこで囲まれたメソッドにする必要があります。

class Calcs
{
    public static double FindAverage(int[] averageNumbers)
    { // Add brace...

        return //...
    } // Close brace
}

return ステートメントには変数宣言は必要ありません。

// return double average = arraysum/averageNumbers.Length;
// Just return the value
return arraysum/averageNumbers.Length;

また、 を呼び出すときはFindAverage、実際にメソッドを呼び出す必要があります。つまり、次のようになります。

    Console.WriteLine(Calc.FindAverage(AverageArray));

通常、.NET 4 を使用すると、既存の機能をそのまま使用できることに注意してください。独自のメソッドを記述する代わりに、次のように記述できます。

    Console.WriteLine(AverageArray.Average());

これは、 (your array)などの任意の数値で機能する拡張メソッドであるEnumerable.Averageを使用しています。IEnumerable<T>IEnumerable<int>


これを Visual Studio 内でコンパイルすると、エラー ウィンドウにコード内のエラーが説明付きで一覧表示されることに注意してください。各エラーをダブルクリックすると、エラーの原因となっている行に直接移動できます。これにより、一度に 1 つのエラーを修正する方法を簡単に理解できるはずです。

于 2012-09-21T20:22:15.847 に答える
1

.NET 3.5+ フレームワークを使用している場合はEnumerable.Average(IEnumerable<Int32>)、機能を再発明する代わりに、LINQ 拡張メソッドを使用する必要があります:)

于 2012-09-21T20:24:37.320 に答える
1

変化する

Console.WriteLine(FindAverage); 

Console.WriteLine(Calcs.FindAverage(AverageArray)); 

class Calcs 
{ 
    public static double FindAverage(int[] averageNumbers); 
    int arraySum=0; 

    for(int i =0; i < averageNumbers.Length; int i++) 
        arraysum+=arraysum; 

   return double average = arraysum/averageNumbers.Length; 


} 

class Calcs 
{ 
    public static double FindAverage(int[] averageNumbers)
    {
        int arraySum=0; 

        for(int i =0; i < averageNumbers.Length; i++) 
            arraySum+=averageNumbers[i]; 

        return arraySum/averageNumbers.Length; 
    } 
}

コンセプトについて話し合いたい場合は、喜んでお手伝いします。

于 2012-09-21T20:25:23.410 に答える
0
static class Calc {

    public static double FindAverage(int[] numbers) {

        int sum = 0;

        foreach (int number in numbers) {
            sum += number;
        }

        return sum / numbers.Length;
    }
}

これは Linq でも簡単に行うことができますが、学習している場合は、言語の基本に固執することをお勧めします。

于 2012-09-21T20:25:32.157 に答える