如何“无法将类型'int'隐式转换为'string'类型”错误?

我正在尝试创建一个具有两个类的 C# 程序,这些类将根据用户的输入做出决定以输出响应(例如,用户说岩石,计算机说纸),这使用户总是输。我目前有错误说


“不能在所有情况下(“case1:”、“case2:”、“case3:”)的行上将类型'int'隐式转换为'string'类型。


然而,我已经将“nameClassif”定义为上面的字符串。我也有一个警告:警告 CS0649:字段 'Player.classif' 从未分配给,并且将始终具有其默认值 null


using System;

using static System.Console;


namespace Tes

{

    class PlayerApp

    {

        public static void Main()

        {

            Player player1 = new Player();

            player1.PlayerChoice = InputValue();

            player1.Classif = InputValue();

            Clear();


            Write(player1);

            Write("\n\n\n\n");

            ReadKey();

        }


        public static string InputValue()

        {

            Write("Please enter rock, paper, or scissors:\t");

            return ReadLine();

        }


    }


    class Player

    {

        private string classif;



        // constructors

        public Player()

        { }


        public Player(string pC)

        {

            PlayerChoice = pC;

        }


        // properties

        public string PlayerChoice { get; set; }


        public string Classif { get; set; }


        public double SetFine()

        {

            if (classif == "rock")

            {

                WriteLine("The computer chose paper. You lose.");


            }


            else if (classif == "paper")

            {

                WriteLine("The computer chose scissors. You lose.");

            }


            else if (classif == "scissors")

            {

                WriteLine("The computer chose rock. You lose.");

            }



            return SetFine();

        }


public string ReturnNameOfClassification()

        {


            string nameClassif;


}

撒科打诨
浏览 144回答 3
3回答

侃侃无极

问题是您声明classif为 a string,但您将其与 进行比较int:private string classif;switch (classif){    case 1: nameClassif = "rock"; break; // 1 is an int, not a string!}简而言之:“5”不等于 5,也不能与 5 比较。要解决此问题,您应该将 like 与 like 进行比较:switch (classif){    case "1": nameClassif = "rock"; break;    case "2": nameClassif = "paper"; break;    case "3": nameClassif = "scissors"; break;    default:        WriteLine("Invalid selection..." +                  " I assume you chose rock... :");        nameClassif = "rock - ???"; break;}现在您要比较的类型与您要比较的类型相同,因此代码可以正常工作。

aluckdog

当您使用switch语句时,case 语句中的值需要与您打开的变量的类型相匹配。您正在打开classif,这是 a string,但您的case语句是 1、2、3,它们是int

慕盖茨4494581

这个:case 1, 2, 3 表示整数..这就是它返回错误的原因。 case "1": nameClassif = "rock"; break;  case "2": nameClassif = "paper"; break;  case "3": nameClassif = "scissors"; break;
打开App,查看更多内容
随时随地看视频慕课网APP