2016-12-18 6 views
-6

私はステートメントを持っているので、ユーザーはキーを入力する必要があります。
彼らが1つを入力すると、1つのことと別のもの、別のものがあります。C#ReadLine Variable String to Int

私のReadlineから私は

問題持っている「エラーCS0029:暗黙的に型 『intは』 『文字列』に変換できません」と。私は私が持っていると思うので、これに伴う問題は何

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

EDITだから、

が、今私は(下記)スティーブの答えを使用している

これは、このエラーをスローしますメッセージ:

CS0029:暗黙的に 'ブール'

に型 'int型' を変換し、この行のために、私は考えることはできません:

case 1: 
    // action for choice == 1 
    if(choice = 1|2) 
    Console.WriteLine("Choice {0} Selected",choice); 
    break; 
+1

'choice'の型を' int'に変更する必要があります。 – Lee

+1

'choice 'はどのタイプですか?エラーがintからstringに変換できない場合、問題は 'choice'が文字列として宣言されている可能性が高いです。それが文字列の場合は、単に 'choice = Console.ReadLine();'を実行してください。intの場合、上記の内容は正常に動作します。 – JohnLBevan

+0

choiceは変数名で、それ以上は文字列選択として宣言されています。 – FettJ

答えて

0

あなたが持っているように見えます:

string choice; 
choice = Convert.ToInt32(Console.ReadLine()); 

Convert.ToInt32戻りますので、 intchoiceの宣言型をintに変更する(または新しい変数を作成する)必要があります。

int choice; 
choice = Convert.ToInt32(Console.ReadLine()); 
+0

これでうまくいきましたが、今はif文がなく、私はこれを受け取ります:エラーCS0029: 'int'を 'bool'に暗黙的に変換することはできません – FettJ

+0

@FettJ - 質問に情報を追加してください。 – Lee

0

エラーは、整数が文字列変数に正しく割り当てられていないことが原因です。これは多くの点で改善することができますが、ここで最大の問題は、ユーザーが何も入力しないようにすることができないことです(頭字語、puntuation、タブ)。

あなたは、常にこのシナリオでは防御的プログラミングと整数で入力を変換しようとする適切な変換方法

int choice; 
if(!Int32.TryParse(Console.ReadLine(), out choice)) 
    Console.WriteLine("You should enter a integer number"); 
else 
{ 
    switch(choice) 
    { 
     case 1: 
      // action for choice == 1 
      break; 
     case 2: 
      // action for choice == 2 
      break; 
     default: 
      // action for any other integer number 
      break; 
    } 
} 

Int32.TryParseを使用する必要があります。入力を変換できない場合はfalseを返し、そうでない場合はtrueを返します。あなたの編集後

EDIT

、このラインはあなたが

if(choice = 1|2) 

この行はビット単位を作るか、値1と値3が得られた値2の間に考えて何をしません。値3を変数の選択肢に割り当てます。 if(3)は、ifステートメントで必要とされるブール式ではありません。

がちなみにC# Operator Precedence

を参照してくださいケース1ためのスイッチ内部、あなたはすでにこの時点での選択肢の価値を知っているし、あなたが直接

Console.WriteLine("Choice {0} Selected",choice); 
を書くことができますので、あなたは、このコードは必要ありません。

またはchoice == 1のときに何をしたいかを指定します。

+0

さて、それは動作しますが、今私はこれを取得します:エラーCS0029:暗黙のうちに 'int'型を 'bool'に変換できません。 – FettJ

+0

どこ?上のコードでは、intをboolに変換しようとするものは何もありません。 – Steve

+0

以下はif文の引数です。if(choice = 1 | 2) \t \t \t \t Console.WriteLine( "Choice {0} Selected"、choice); – FettJ