2

好吧,我被要求为剧院票务系统编写控制台应用程序。用户将输入所需的座位数量和选择的剧院区域(使用代码 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();
4

5 回答 5

3
if (iArea = "1")

iArea是整数,"1"是字符串。所以你不能比较这两者。您应该改为与整数进行比较1。另请注意,单个等号 ( =) 是一个赋值,而不是比较。你会想在那里使用两个:==

if (iArea == 1)

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

问题是您在开始时声明了变量,但在使用它之前iCost从未安全地为其分配任何值。当等于 时,您确实分配了一个值,但对于所有其他情况,该变量保持未初始化。当然,编译器不知道当程序运行进行测试时你最终会输入,这无论如何都不是一件安全的事情。所以它需要你用任何东西来初始化你的变量。iArea11

所以一开始,你可以说int iCost = 0;解决这个问题。

于 2013-11-01T17:06:51.560 回答
1

"1"是一个string,不是int

if (iArea == 1)
于 2013-11-01T17:07:02.590 回答
1

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

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

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

if (iArea == 1)

注意==代替=,单用于赋值,双用于比较。

于 2013-11-01T17:08:55.307 回答
0
if (iArea = "1")

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

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

if (iArea == 1)
于 2013-11-01T17:08:22.067 回答
0
String strArea =Console.ReadLine();

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

或者

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

       if (iArea == 1))
        {
            iCost = 24;
        }
于 2013-11-01T17:10:49.170 回答