0

所以我正在制作一个程序,你输入 2 个测试分数,它会在标签中显示测试 1 或测试 2 是否具有更高的等级和两个测试的字母等级。这应该是一个简单的程序,但我收到 2 个错误:无法将类型“对象”隐式转换为“字符串”。存在显式转换(您是否缺少演员表?)。我收到 letterGrade1 和 letterGrade2 的这个错误。这是代码:

    private object TestScores(decimal Test)
    {
        string testGrade = null;

        //Perform the function
        if (Test >= 90) {
            testGrade = "A";
        } else if (Test >= 80) {
            testGrade = "B";
        } else if (Test >= 70) {
            testGrade = "C";
        } else if (Test >= 60) {
            testGrade = "D";
        } else if (Test < 60) {
            testGrade = "F";
        }


        //return the answer
        return testGrade;
    }


        }
    }

如果有人可以帮我解决问题,我将不胜感激!

问题已解决!谢谢大家。

4

5 回答 5

1

将您的代码更改为此...

 private string TestScores(decimal Test)
    {
        string testGrade = null;

        //Perform the function
        if (Test >= 90) {
            testGrade = "A";
        } else if (Test >= 80) {
            testGrade = "B";
        } else if (Test >= 70) {
            testGrade = "C";
        } else if (Test >= 60) {
            testGrade = "D";
        } else if (Test < 60) {
            testGrade = "F";
        }
        //return the answer
        return testGrade;
    }

如果消费者需要向下转换它,则没有理由返回一个对象。

于 2013-10-26T20:10:29.220 回答
1

您正在尝试在这些代码行中将对象分配给字符串:

    letterGrade1 = TestScores(test1ScoreDecimal);
    letterGrade2 = TestScores(test2ScoreDecimal);

您可以通过两种方式解决它,或者将 TestScores 的返回类型更改为字符串。或将结果显式转换为字符串。

    letterGrade1 = (string)TestScores(test1ScoreDecimal);
    letterGrade2 = (string)TestScores(test2ScoreDecimal);
于 2013-10-26T20:11:14.943 回答
0

您正在尝试将结果分配给TestScores变量string,但TestScores返回object...

将返回类型更改TestScoresstring

或更改为如果您确实因某种未知原因TestScores(test1ScoreDecimal).ToString()需要返回object

于 2013-10-26T20:09:23.043 回答
0

将返回类型更改TestScoresstring或使用:

letterGrade1 = (string)TestScores(test1ScoreDecimal);
于 2013-10-26T20:12:12.653 回答
-1

要么使 TestScore 成为没有构造函数的静态类:

static class TestScores
{
   static string Calculate(double score){}
}

或正确实例化类:

letterGrade1 = new TestScores(test1ScoreDecimal);
letterGrade2 = new TestScores(test2ScoreDecimal);
于 2013-10-26T20:12:08.097 回答