2008-11-29 51 views
0

在我写的应用程序,方法之一允许用户输入要变成字母数字。采用双层,返回字符串

例如,用户将进入等级(如加倍),程序将决定(当标准被满足),以返回与号码相关联的字母。最初,我是这样写的:

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。 我如何去获得这个工作,我希望它的方式?

+0

看起来像一个明显的名称冲突。你能发布整段代码吗? – axk 2008-11-29 19:39:33

+0

这是九个左右的方法。那会相当多。 我试图在其他三种方法中使用相同的foreach语句,但这些方法并没有像这样的标题名称。所以我认为你对这个名称冲突评估是正确的。 我现在才知道如何改变它。 – Harris 2008-11-29 19:48:27

回答

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

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

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

我假定scores是双打的阵列。它是否正确?

如果你从一个数组返回,你只会得到第一个分数的分数......也许你应该返回一个相关的分数集合。

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";