为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
撒科打诨 2022-10-23 15:18:00
我正在尝试创建一个具有两个类的 C# 程序,这些类将根据用户的输入做出决定以输出响应(例如,用户说岩石,计算机说纸),这使用户总是输。我目前有错误说“不能在所有情况下(“case1:”、“case2:”、“case3:”)的行上将类型'int'隐式转换为'string'类型。然而,我已经将“nameClassif”定义为上面的字符串。我也有一个警告:警告 CS0649:字段 'Player.classif' 从未分配给,并且将始终具有其默认值 nullusing 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;}
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

问题是您声明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;

}

现在您要比较的类型与您要比较的类型相同,因此代码可以正常工作。


查看完整回答
反对 回复 2022-10-23
?
aluckdog

TA贡献1847条经验 获得超7个赞

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



查看完整回答
反对 回复 2022-10-23
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

这个:


case 1, 2, 3 表示整数..这就是它返回错误的原因。


 case "1": nameClassif = "rock"; break;

  case "2": nameClassif = "paper"; break;

  case "3": nameClassif = "scissors"; break;


查看完整回答
反对 回复 2022-10-23
  • 3 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信