2016-12-21 11 views
-5

私はプログラミングには新しく、関数からmainに値を返すためにこのプロジェクトを取得しようとしています。しかし、データとフォーマットを渡す際に少しはスケッチです。関数からcount整数をmainに戻すにはどうしたらいいですか?

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

namespace most_frequent_int 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      mostFreq(new int[] {1,5,2,5,24,6,5}); 
     } 

     static void mostFreq(int[] number) 
     { 
      int element = 0; 
      int count = 0; 

      for (int j = 0; j < number.Length; j++) 
      { 
       int tempElement = number[j]; 
       int tempCount = 0; 

       for (int p = 0; p <number.Length; p++) 
       { 
        if (number[p] == tempElement) 
        { 
         tempCount++; 
        } 
        if (tempCount > count) 
         element = tempElement; 
        { 
         count = tempCount; 
        } 
       } 
      } 
      Console.WriteLine("The most frequent element is: " + element + " and appears " + count + " times."); 
     } 

    } 
} 

私はこの方法では、カウントに格納されている値を取得して再使用することがメインにそれを返すようにしようとしているが、私はこれを行う方法に頭を抱え込みました。 本当に申し訳ありませんが、これはまったくばかげた質問ですが、助けていただければ幸いです。

+0

変更 '静的な無効mostFreq''静的int型mostFreq'へとメソッドの最後には、リターンがカウント '置く;'値を返すように。戻り値も格納する必要があります。あなたのメソッドを呼び出すときにこれを書いてください。 'int count = mostFreq(新しいint [] {1,5,2,5,24,6,5}); ' –

答えて

2

まず変更したいものに、あなたのメソッドの戻り値の型:

:あなたのmostFreq方法(整数)

static int mostFreq(int[] number) 
{ 
    //... 
} 

、あなたはその方法を返す必要が値を渡すためにreturnキーワードを使用します

static int mostFreq(int[] number) 
{ 
    //... 
    return count; 
} 

そして、それをメインに値をキャッチし、使用しますから、通信する

static void Main(string[] args) 
{ 
    int count = mostFreq(new int[] {1,5,2,5,24,6,5}); 
    Console.WriteLine("Count is " + count); 
} 
1

最も簡単な方法をその呼び出し元に関数は、次の例のように、単に値を返すために、おそらくです:その後、

static int return42() { 
    return 42; 
} 

そして、mainに:

つまり
int fortytwo = return42(); 

、それが伴います:

  • ファンクションシグニチャがvoidではなく実数型を返すようにします。
  • 実際に関数から望ましい値を返す。呼び出し側が後で使用するために戻り値を取得するようにした

残念ながら、2つの値が返されます。 の場合、文字列自体を返してmainに印刷するだけで、他の方法でカウントや値を使用したい場合には、適応性がありません。

これは結局のところ、関数を関数に入れる主な理由です。そのため、共通のコードを多くの場所から呼び出すことができます。

より適合方法のような、多くのオプションを使用することができる:複数のオブジェクトを含むクラスであるタプルを用い

  • 変数が同じ型である場合は配列を返します。または
  • out二次戻り値の関数のパラメータを使用します。

    mainで、

    static void mostFreq(int[] number, [out] int value) { 
        value = MagicMostCommonValueInArray(); 
        return MagicCountOfThatValue(); 
    } 
    

    そして:その最後のものを使用して

は、例えば、(あなたの実際のコードは、いくつかの魔法の機能に置き換えるとすると、デモの目的のために呼び出す)のようなものを必然的に伴います

int element; 
int count = mostFreq(new int[] {1,5,2,5,24,6,5}, out element); 
Console.WriteLine(
    "The most frequent element is: " + element + 
    " and appears " + count + " times."); 

私の助言は、単一の文字列を返すのではなく、そのメソッドを使用することです。

0

それは次のようになります。

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

namespace most_frequent_int 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     string result = mostFreq(new int[] {1,5,2,5,24,6,5}); 
     Console.WriteLine(result); 
    } 

    static string mostFreq(int[] number) 
    { 
     int element = 0; 
     int count = 0; 

     for (int j = 0; j < number.Length; j++) 
     { 
      int tempElement = number[j]; 
      int tempCount = 0; 

      for (int p = 0; p <number.Length; p++) 
      { 
       if (number[p] == tempElement) 
       { 
        tempCount++; 
       } 
       if (tempCount > count) 
        element = tempElement; 
       { 
        count = tempCount; 
       } 
      } 
     } 
return "The most frequent element is: " + element + " and appears " + count + " times."   
    } 

} 
関連する問題