使用double,返回字符串

时间:2008-11-29 19:34:24

标签: c# arrays string double

在我正在编写的应用程序中,其中一种方法允许用户输入的数字变成字母。

例如,用户将输入成绩(作为双打),程序将决定(满足标准时)以返回与该数字相关联的字母。最初,我写的是这样的:

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更改为返回。 但是,当我这样做时,我收到语法错误告诉我:

  

无法在此范围内声明名为score的局部变量,因为它会给“score”赋予不同的含义,“score”已在父级或当前范围中用于表示其他内容。

因此,我认为我无法使用score,因为标头已包含score。 我该怎么做才能按照我想要的方式工作?

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

尝试更改for循环中的变量名称。

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

我认为scores是一个双打数组。这是对的吗?

如果你从一个阵列返回,你将只获得第一个分数的分数......也许你应该返回一个相关的分数集合。

答案 2 :(得分: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";