繁体   English   中英

无法将类型“字符串”转换为“整数”?

[英]Cannot convert type 'String' To '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();
if (iArea = "1")

iArea是整数, "1"是字符串。 因此,您无法将两者进行比较。 您应该改为与整数1进行比较。 另请注意,单个等号( = )是赋值 ,而不是比较。 您将要在其中使用两个: ==

if (iArea == 1)

现在,当我输入iTotalCost = iSeatNum * iCost;时,它将显示另一个错误iTotalCost = iSeatNum * iCost; 它出现了“使用未分配的局部变量iCost”的错误。我怎么解决这个问题?

问题在于,您在一开始就声明了变量iCost ,但是在使用它之前永远不要安全地为其分配任何值。 iArea等于1 ,您确实分配了一个值,但是对于所有其他情况,该变量保持未初始化状态。 当然,编译器不知道您将在程序运行进行测试时最终键入1 ,这绝对不是安全的事情。 因此,它需要您使用任何内容来初始化变量。

因此,一开始,您只能说int iCost = 0; 解决这个问题。

那么"1"是一个string ,而不是int

if (iArea == 1)

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

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

您可以使用以下方法将其与数字进行比较:

if (iArea == 1)

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

if (iArea = "1")

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

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

if (iArea == 1)
String strArea =Console.ReadLine();

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

要么

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM