2016-06-15 8 views
-3

これは私のコードです。なぜそれが動作しないのか分かりません。私はそれを調べようとしましたが、なぜそれが分かりませんでした。代わりにboolを使う必要がありますか? おかげで(私は完全にプログラミングに非常に新しいです)、ジャレッドC#以上の値Console.Readline

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication9 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string name; 
      Console.WriteLine("Hi. Whats your name?"); 
      name = Console.ReadLine(); 
      Console.WriteLine("Hi {0} my name is John", name); 
      Console.WriteLine("How old are you {0}?", name); 
      string age = Console.ReadLine(); 
      if (age >= 35) 
      { 
       Console.WriteLine("You are getting old"); 
      } 
      else if (age <= 35) 
      { 
       Console.WriteLine("You are still young"); 
      } 
      else 
      { 
       Console.WriteLine("Thats not an option!"); 
      } 
     } 
    } 
} 
+2

によって行われますか?それはクラッシュしますか?それは間違った値を返しますか? – Nikola

+0

誰かが「年齢」として「foo」と入力すると、それを35と比較するにはどうしますか? – Sayse

+0

あなたのコードは、_old fart_として35歳の人を報告しますが、あなたは_ "young" _として報告したいようです。 – MickyD

答えて

3
int age = 0; 
var result = Int32.TryParse(Console.ReadLine(), out age); 

if (result) 
{ 

    if (age >= 35) 
    { 
     Console.WriteLine("You are getting old"); 
    } 
    else if (age <= 35) 
    { 
     Console.WriteLine("You are still young"); 
    } 
    else 
    { 
     Console.WriteLine("Thats not an option!"); 
    } 
} 

文字列にinputed年齢を変換する前に、あなたのエントリが多数あることを確認しなければならない、あなたはInt32.TryParse()

0

Console.ReadLinestring値を返し、あなたはintアウト

int age = 0 ; 
if(int.TryParse(Console.ReadLine(), out age) 
{ 
if (age >= 35) 
    { 
     Console.WriteLine("You are getting old"); 
    } 
    else if (age <= 35) 
    { 
     Console.WriteLine("You are still young"); 
    } 
    else 
    { 
     Console.WriteLine("Thats not an option!"); 
    } 
} 
1

に値を解析する必要がintstringを比較しますconsole.readline()は整数と等しいかどうかをチェックする文字列です

  int convertedage = Convert.ToInt(age); 
      if (convertedage >= 35) 
      { 
       Console.WriteLine("You are getting old"); 
      } 
+0

彼はプログラミングに慣れていないと言いました。 TryParseを使用するか、try/catchでこの構造を使用する方がよいでしょう。 –

2

を使用することができますので、あなたがConsole.ReadLine()を介して入力を読んだとき、あなたが後で比較をしようとすると、それはstring を返します。文字列を整数と比較しています。 まず文字列を整数に変換する必要があります。 あなたはそれを安定させると、あなたはtry/catchブロックに入れることができ、間違った入力をキャッチしたい場合:

string age = Console.ReadLine(); 
try 
{ 
    int ageInInt = Convert.ToInt16(age); 
    if (ageInInt >= 35) 
    { 
     Console.WriteLine("You are getting old"); 
    } 
} 
catch 
{ 
    Console.WriteLine("Please type a real number"); 
} 
0

Console.ReadLineが文字列ではなく、あなたのために必要な整数を返しますので、あなたが経験している問題があります比較。

また、あなたのelse ifがそうでなかったすべてのケースを見つけるので、あなたの最後のelseは決して届かないでしょう。私はあなたが実際にユーザーが数字を入力しないときの最終的なメッセージを意味していたと仮定しています。

可能であれば、int.TryParseを使用して入力を数値に変換して書き換えることができます。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication9 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string name; 
      Console.WriteLine("Hi. Whats your name?"); 
      name = Console.ReadLine(); 
      Console.WriteLine("Hi {0} my name is John", name); 
      Console.WriteLine("How old are you {0}?", name); 
      string input = Console.ReadLine(); 
      int age; 
      if (int.TryParse(input, out age)) { 
       if (age >= 35) 
       { 
       Console.WriteLine("You are getting old"); 
       } 
       else // else if not needed 
       { 
       Console.WriteLine("You are still young"); 
       } 
      } 
      else 
      { 
       Console.WriteLine("Thats not an option!"); 
      } 
     } 
    } 
} 
+0

無効な年齢層のチェックを追加することができます(例:-1) –

0

この「string age = Console.ReadLine();」と記述すると、左側に文字列タイプを格納しています。

あなたはint型と "年齢" を比較した場合

または

割り当てint型の変数(例えば、年齢< 35として)(int型の数=年齢;)年齢は、整数に変換する必要があります。

の変換は、2つの方法

あなたは_what_が動作しない指定する必要が
// First way  
int number = Convert.ToInt32(age); 

// Second way 
int number = Int.Parse(age); 
関連する問題