C#で負の数を防ぐ?

正の数だけを受け入れ、負の数を受け入れないC#コードはありますか?

好き

Console.WriteLine("Write number"); 
Console.ReadLine();

私はチュートリアルを読むが、それでも助けにはならない

今私はどのように負の数を防ぐための考えがありません。

2
防止の意味は何ですか?自分で番号を確認してください。
追加された 著者 VMAtm,

6 答え

ユーザーフレンドリーにするために、ループはしばしば有効です。有効な入力が入力されるまで、入力を要求し続けます。 TryParse は、有効でない入力が入力された場合に false を返します。有効な入力が入力されると、 TryParse true を返し、 number は値を保持します。 uint を使用すると、負の数値が入力されなくなります。

uint number;

do
{
  Console.WriteLine("Write non-negative number");
  string strNumber = Console.ReadLine();
}
while(!uint.TryParse(strNumber, number));
5
追加された

手動でそれを自分で確認する必要があります...

do {
   //Read number into variable   

   if (number < 0) {
     Console.WriteLine("Number cannot be negative");
   }
}while(number < 0)

それは数字を読んで、次にその否定をチェックすることによって働く。そうであれば、ユーザーに警告し、ループを強制的に再試行します。

3
追加された
申し訳ありませんが私は明確ではなかった。私のコメントを番号を取得するために使用するコードに置き換える必要があります。このようにして if(number <0)がヒットした場合、再び番号を要求します。
追加された 著者 Grambot,
ありがとう、それは私が探していたが、 "数値は負ではありません"停止しないで、私は負の数を入力すると、停止することなく来て、私はそれが一度来てほしい。
追加された 著者 CsharpNoob,

uint.TryParse と異なるものは、有効な入力がどのように表示されるべきかをさらに指定できる int.TryParse(string、NumberStyles、IFormatProvider、out int)

string str = ...
int value;
if (int.TryParse(str, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.CurrentCulture, out value))
{
   //...
}

通常の int.TryParse には、望ましくない NumberStyles.AllowLeadingSign も含まれています。

uint may be unavailable if there are strict guidelines for CLS compliant code.

1
追加された

uint がありますが、それでもユーザーが負の数を入力する可能性があるため、これは必要ではありません。

文字列を解析して整数であることを確認したら、 Math.Abs​​()を呼び出して絶対値を取るだけで済みます。

0
追加された

データ入力フィールドに負の数を入力できないようにするを試みている場合は、いくつかの選択肢があります。

  • 1つは、数字、コンマ、および 期間
  • もう一つは、コード内の文字をデータ入力から読み込んだ後に、文字をドロップすることです。

これを処理する方法は、コンソール、WinForms/WPF、またはWebサイトのアプリケーションによって異なります。

たとえば、ASP.Net Webページでは、検証コントロールを使用して数字のみを入力できます。これはこれを行う1つの方法です:


0
追加された

Console.ReadLine()は、ユーザーがコマンド行に入力できる内容を制限しません。自分で入力を検証する必要があります。おそらくこれを行う最も簡単な方法はBoltClockで説明されているとおりです。しかし、値がuintでない場合は、無効なキャスト例外をキャッチするためにコードをキャッチする必要があります。

これは、ユーザー入力が整数であることを確認するだけでなく、陽性であることを確認するだけです。それ以外の場合は、2部のチェックを実行する必要があります。最初に、ユーザーが整数を入力し、次に、0より大きい整数を入力します。

0
追加された