无法将'String'类型转换为'Int'?

时间:2013-11-01 17:04:46

标签: c# string int

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

Area            Code    price
Stalls           1      £24
Grand circle     2      £30
Upper circle     3      £27
Gallery          4      £20

我到目前为止提出了以下内容,但是在IF语句部分下它与字符串+ 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();

5 个答案:

答案 0 :(得分:3)

if (iArea = "1")

iArea是一个整数,"1"是一个字符串。所以你无法比较这两者。您应该与整数1进行比较。另请注意,单个等号(=)是 asignment ,而不是比较。您将需要在那里使用两个:==

if (iArea == 1)

  

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

问题是你在开始时声明变量iCost,但在使用它之前从不安全地为其分配任何值。当<{1}}等于iArea时,您执行分配值,但对于所有其他情况,该变量仍未初始化。当然,当程序运行进行测试时,编译器不知道你最终会输入1,这无论如何都不是安全的。所以它要求你用任何东西初始化你的变量。

所以在开始时,你可以说1来解决这个问题。

答案 1 :(得分:1)

"1"string,而不是int

if (iArea == 1)

答案 2 :(得分:1)

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

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

您可以使用以下方式将其作为数字进行比较:

if (iArea == 1)

注意==而不是=,单个用于分配,双用于比较。

答案 3 :(得分:0)

if (iArea = "1")

这没有意义。首先,您使用赋值equals运算符。您正在尝试为iArea分配"1"的值。相反,您需要逻辑等于运算符==,它将返回true或false,具体取决于第一个操作数是否等于第二个操作数。

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

if (iArea == 1)

答案 4 :(得分:0)

String strArea =Console.ReadLine();

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

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

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