C# 无法转换类型';字符串';至';Int';?

C# 无法转换类型';字符串';至';Int';?,c#,string,int,C#,String,Int,好的,我被要求为戏票系统编写一个控制台应用程序。用户将输入所需的座位数和所选剧院的面积(使用代码1-4表示所选的座位面积)。程序应根据如下所示的定价计划计算并显示门票成本 Area Code price Stalls 1 £24 Grand circle 2 £30 Upper circle 3 £27 Gallery 4 £20 到目前为止,我已经提出了以下内容,但在IF

好的,我被要求为戏票系统编写一个控制台应用程序。用户将输入所需的座位数和所选剧院的面积(使用代码1-4表示所选的座位面积)。程序应根据如下所示的定价计划计算并显示门票成本

Area            Code    price
Stalls           1      £24
Grand circle     2      £30
Upper circle     3      £27
Gallery          4      £20
到目前为止,我已经提出了以下内容,但在IF语句部分下的string+Int转换中出现了一个错误,这可能很容易修复,但我是编程新手,因此我不确定如何解决它:

//Declare variables and constants
int iSeatNum;
int iArea;
int iCost;
int iTotalCost;

//Ask the user how many seats they require
Console.WriteLine("How many seats would you like to purchase?");
iSeatNum = Convert.ToInt32(Console.ReadLine());

//Ask the user what area they would like to be in
Console.WriteLine("Where would you like to sit? Please enter 1 for Stalls, 2 for Grand Circle, 3 for Upper Circle or 4 for Gallery");
iArea = Convert.ToInt32(Console.ReadLine());

**if (iArea = "1")**
{
    iCost = 24;
}

//Clarify information & work out
Console.WriteLine("You are buying " + iSeatNum + " Seats at " + iArea);
iTotalCost = iSeatNum * iCost;
Console.WriteLine("Your total ticket cost is " + iTotalCost);

//Prevent from closing
Console.WriteLine("Press any key to close");
Console.ReadKey();
iArea
是一个整数,
“1”
是一个字符串。所以你无法比较这两者。您应该改为与整数
1
进行比较。还要注意,单个等于符号(
=
)是一个符号,而不是一个比较。您将需要在那里使用两个:
==

if (iArea == 1)
if (iArea == 1)

现在它显示了另一个错误,当我放置
iTotalCost=iSeatNum*iCost它出现了“使用未分配的局部变量iCost”的错误,知道我如何解决这个问题吗

问题是,您在开始时声明了变量
iCost
,但在使用之前从未安全地为其赋值。当
iArea
等于
1
时,确实会指定一个值,但对于所有其他情况,变量仍保持未初始化状态。当然,编译器不知道当程序运行进行测试时,您最终会键入
1
,这无论如何都不是一件安全的事情。因此,它要求您用任何东西来初始化变量

所以在开始的时候,你可以说
inticost=0字符串,而不是
int

这没有道理。首先,使用赋值等于运算符。您正在尝试分配
iArea
值“1”
。相反,您需要逻辑相等运算符
=
,它将根据第一个操作数是否等于第二个操作数返回true或false

其次,您已经将从控制台读取的字符串值转换为强类型整数。因此,您需要按如下方式编写if语句:

if (iArea == 1)

因为您已经使用以下方法将字符串(Console.ReadLine()返回字符串)转换为数字:

iArea = Convert.ToInt32(Console.ReadLine());
if (iArea == 1)
您可以使用以下方法将其作为数字进行比较:

iArea = Convert.ToInt32(Console.ReadLine());
if (iArea == 1)
请注意,
=
而不是
=
,单倍用于赋值,双倍用于比较

String strArea =Console.ReadLine();

       if (strArea.Equals("1"))
        {
            iCost = 24;
        }

int iArea=Convert.ToInt32(Console.ReadLine())


非常感谢,我知道我现在哪里出错了,因为它们是关系运算符?我已经这样做了,但现在它显示了一个进一步的错误,当我输入“iTotalCost=iSeatNum*iCost”时,它出现了“使用未分配的局部变量iCost”的错误。你知道我如何解决这个问题吗?再次感谢Brilliant,这帮了大忙!非常感谢,现在100%有效!
       if (iArea == 1))
        {
            iCost = 24;
        }