2

よし、劇場のチケット システム用のコンソール アプリケーションを作成するように依頼されました。ユーザーは、必要な座席数と、選択した劇場のエリアを入力します (コード番号 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();
4

5 に答える 5

3
if (iArea = "1")

iAreaは整数、"1"は文字列です。したがって、この 2 つを比較することはできません。1代わりに整数と比較する必要があります。また、単一の等号 ( =) は割り当てであり、比較ではないことに注意してください。そこで 2 つを使用する必要があります。==

if (iArea == 1)

iTotalCost = iSeatNum * iCost;「割り当てられていないローカル変数iCostの使用」というエラーが表示されると、さらにエラーが表示されるようになりました。これを修正する方法はありますか?

問題は、最初に変数を宣言しますが、使用する前に安全に値を割り当てないことです。が に等しい場合は値を割り当てますが、それ以外の場合はすべて、変数は初期化されていません。もちろん、コンパイラは、プログラムがテストのために実行されるときに入力することになることを知りません。とにかく、それは安全なことではありません。そのため、代わりに変数を何かで初期化する必要があります。iCostiArea11

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)

==の代わりに=、single が割り当てに使用され、double が比較に使用されることに注意してください。

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

これは意味がありません。まず、代入等号演算子を使用しています。iAreaの値を割り当てようとしています"1"==代わりに、最初のオペランドが 2 番目のオペランドと等しいかどうかに応じて true または false を返す論理等価演算子が必要です。

次に、コンソールから読み取った文字列値を厳密に型指定された整数に変換済みです。したがって、次のように 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 に答える