0

私が書いているアプリケーションでは、メソッドの 1 つで、ユーザーが入力した数字を文字に変換できます。

たとえば、ユーザーが成績を (ダブルスとして) 入力すると、プログラムは (基準が満たされたときに) 数値に関連付けられた文字を返すことを決定します。当初、私は次のように書いていました。

public void GetGrade(double scores)
Console.Write("Score of {0} earns: ", score);

if (score >= 95.0)
    Console.WriteLine("A+");
else if (score >= 90.0)
    Console.WriteLine("A");
else if (score >= 85.0)
    Console.WriteLine("B+");
else if (score >= 80.0)
    Console.WriteLine("B");
else if (score >= 75.0)
    Console.WriteLine("C+");
else if (score >= 70.0)
    Console.WriteLine("C");
else if (score >= 65.0)
    Console.WriteLine("D+");
else if (score >= 60.0)
    Console.WriteLine("D");
else
    Console.WriteLine("F");

ただし、RETURN を念頭に置いて記述する必要があります。だから、私はそれがパブリック文字列であるべきだと思いますGetGrade(double scores) そしてそれは配列にあるので私が必要とするでしょう:

foreach(double score in scoress)
{
THE CODE I POSTED ABOVE
}

console.writelineすべてのs を返すように変更することを除いて。ただし、これを行うと、次のような構文エラーが表示されます。

スコアという名前のローカル変数をこのスコープで宣言することはできません。これは、親スコープまたは現在のスコープで別のものを示すために既に使用されている「スコア」に別の意味を与えるためです。

scoreそれで、ヘッダーに既に含まれているため使用できないと収集しますscore。これを希望どおりに機能させるにはどうすればよいですか?

4

3 に答える 3

3

あなたの質問は紛らわしいです。

そして、それは配列にあるので...

しかし、あなたの例には配列が含まれていません。あなたの方法は次のようにうまくいくでしょう

public string ToGrade(double score)
{
  if (score >= 95.0)
        return "A+";
    else if (score >= 90.0)
        return "A";
  /* snip */
    else
        return "YOU GET NOTHING!  YOU LOSE!  GOOD DAY SIR!";
}

私にはあなたの方法が問題ではないように思えます。あなたがそれを呼び出しているコードが問題です。質問に対する正しい回答を得るには、それを投稿する必要があります。

「グレード」の配列を取得し、それらを一連の文字グレードに変換する場合は、文字グレードを格納する配列が必要です。次のようなものが必要になる場合があります。

public static string[] ToGrade(double[] grades)
{
  // sanity checks go here
  string[] result = new string[grades.Length];
  for(int i = 0; i < grades.Length; i++)
    result[i] = ToGrade(grades[i]);
  return result;
}
于 2008-11-29T19:48:02.653 に答える
1

for ループ内の変数名を変更してみてください。

Foreach (double s in scores){...}

scoresdoubleの配列だと思います。これは正しいです?

配列から戻った場合、最初のスコアの成績のみが取得されます...おそらく、相関する成績のコレクションを返す必要があります。

于 2008-11-29T19:51:36.250 に答える
0
var list = [
    [95.0, "A+"],
    [90.0, "A"],
    [85.0, "B+"],
    [80.0, "B"],
    [75.0, "C+"],
    [70.0, "C"],
    [65.0, "D+"],
    [60.0, "D"]
];

 for (var i in list)
    if (score >= list[0])
        return list[1];
 return "F";
于 2008-11-29T19:55:33.887 に答える