亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何“無法將類型'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 關注
  • 191 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號