2012-03-13 19 views
2

ユーザーが正しくフォーマットされた数値を入力したかどうかを検出する簡単なコンソールアプリケーションには少し問題があります。 つまり、1212sssなどの値、またはasjkq12323や1文字などの値は受け入れられません。私は純粋な整数値だけを受け入れたいと思っています。ここで有効な数値の入力を確認する - コンソールアプリケーション

は私がすべての助けに感謝

bool detectNumber(string s) 
{ 
    int value=0; 
    Int.TryParse(s,out value); 
    return (value!=0)?true:false; 
} 

を試してきたものです。 sooooありがとうございました,,,,,

+1

あなたが試したことで何が問題になっていますか? –

+0

私は** int ** TryParse'が何をするのか正確に**する方法を書いていません... – gdoron

+0

実際にそこには何も間違いはありません。私はtryparseの結果を共有したいと思います。 – Hoger

答えて

1
string line = Console.ReadLine(); 
int value; 
if (int.TryParse(line, out value)) 
{ 
    Console.WriteLine("Integer here!"); 
} 
else 
{ 
    Console.WriteLine("Not an integer!"); 
} 
+0

あなたの評判がもう少しアップしたというあなたの答えを受け入れます。同意する? :-D – Hoger

3

TryParseはブール値を返します。その値がoutパラメータで渡されたものではないことを確認します。

if(int.TryParse(s, out value)) 
{ 
    // do something 
} 

それとも:

return int.TryParse(s, out value); 

なお、outキーワードを使用して渡された値を初期化する必要はありません。パラメータを宣言するメソッドは、それを初期化してから戻す必要があります。 (@gdoronコメントで述べたように、浮動小数点数のためのようなdouble.TryParse()

int foo; // legal 
int.TryParse("123", out foo); 

すべてのBCL「お試し」方法

は同じ規則に従ってください。

そして、int.TryParse()を実装する基礎となるライブラリには、source codeがあります。

+0

浮動小数点はどうですか? 'double.TryParse' ... – gdoron

2
int value = 0; 
bool ok = int.TryParse(s, out value); 
return ok; 
1

あり数字のみの番号をテストするには、いくつかの方法があります。すべての

まず、それが最大値だのためIntを使用することはありませんが、どちらかintまたはInt32を使用しています。

解析

int result; 
if (int.TryParse("123", out result)) 
{ 
    Debug.WriteLine("Valid integer: " + result); 
} 
else 
{ 
    Debug.WriteLine("Not a valid integer"); 
} 

Convert.ToInt32()

// throws ArgumentNullExceptionint 
result1 = Int32.Parse(null); 

// doesn't throw an exception, returns 0 
int result2 = Convert.ToInt32(null); 

IsNumeric関数()

using Microsoft.VisualBasic; 
// ...... 
bool result = Information.IsNumeric("123"); 

パターンマッチング

0
string strToTest = "123"; 
Regex reNum = new Regex(@"^\d+$"); 
bool isNumeric = reNum.Match(strToTest).Success; 

あなたのコードは正常に動作します。あなたはそれを少しだけリファクタリングすることができます。次のコードは短くなりますが、まったく同じです:

static bool IsInt32(string s) 
{ 
    int value; 
    return Int32.TryParse(s, out value); 
} 
関連する問題