2012-01-18 26 views
0

C++コードのコンパイル中に問題があります。私はまだC++を学んでいるので、私はまだ高度なコマンドのほとんどをまだ理解していません。私は、ユーザーの姓、年齢、性別を尋ね、それをユーザーに表示するプログラムを作成しようとしていました。これは私のソースコードです:エラー:スイッチ数量が整数ではありません。C++

#include <iostream> 

int main() 
{ 
    char firstName[20]; 
    char lastName[20]; 
    char age[6]; 
    char gender[3]; 

    int i = 0; 

    std::cout << "Please enter your full name: "; 
    std::cin.getline (firstName, 19, ' '); 
    std::cin.getline (lastName, 19); 

    std::cout << "Enter your age: "; 
    std::cin.getline (age, 5); 

    while (i != 1) 
    { 
     std::cout << "Enter your gender (m/f)"; 
     std::cin.getline (gender, 2); 

     switch (gender) 
     { 
      case 'm': 
       std::cout << "\nHello Mr. "; 
       i++; 
       break; 

      case 'f': 
       std::cout << "\nHello Mrs. "; 
       i++; 
       break; 

      default: 
       std::cout << "\nThat is not even a gender!\n"; 
       break; 
     } 
    } 

    std::cout << lastName << "!\n"; 
    std::cout << "You are " << age << " years old."; 

    return 0; 
} 

私はこれをコンパイルしようとしたとき、私のコンパイラは私に次のエラーを与える:

NameAgeQ.cpp: In function 'int main()': 
NameAgeQ.cpp:24:15: error: switch quantity not an integer 

私は前に「スイッチ」ステートメントで別のプログラムをコーディングしようとしました文字を扱うことができます。しかし、これまでのプログラムでは、「性別」を「性別」と宣言しました。代わりに 'char gender [];'の代わりに。

なぜこの特定のケースでは 'switch'ステートメントが機能しないのですか?配列文字列をサポートしていませんか?

+1

なぜあなたのソースコードに字下げがないのですか? –

+0

私はこのリンクがあなたの疑問をすべて解決すると思います:http://stackoverflow.com/questions/4535825/error-switch-quantity-not-an-integer – Azodious

答えて

4

いいえ、そうではありません。単一のcharは整数です。配列はありません。あなたのケースでは、この行はそれを修正する必要があります

switch (gender[0]) 

これは、あなたが今再び整数型である配列内の最初のcharを使用していることを意味します。

+1

恐らく 'gender'は配列なので' getline '。 –

+0

確かに。そのコメントを削除します。 –

0

スイッチのgender*genderに置き換えてください。現在では、配列としてパラメータを使用しますが、最初の文字のみを使用します。

1

あなたは3文字の長い配列として性別を定義していますが、

char gender; 

としてそれを定義し、「m」または「F」のいずれかを保存するためにそれを使用する必要があるように思えます。このようにして、すでに使用しているスイッチを使用できます。

0

理由は、配列の名前として性別が(配列の最初の要素へのポインタはあなたが スイッチ((*性別)) を行う必要がありますいずれか、またはそれが スイッチの前に言われたようにそれを修正することであるということです性別[0])

関連する問題