If txtNum1.Text <= 0 Or txtNum2.Text <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
私はプログラミングが初めてです。いずれかのテキスト ボックスの数値が 0 以下の場合にエラー メッセージが表示され、クラッシュしないように、if/else ステートメントを作成しようとしています。
If txtNum1.Text <= 0 Or txtNum2.Text <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
私はプログラミングが初めてです。いずれかのテキスト ボックスの数値が 0 以下の場合にエラー メッセージが表示され、クラッシュしないように、if/else ステートメントを作成しようとしています。
.Text
プロパティの数値を整数として解析する必要があります。
あなたのIfステートメントは次のようになります
If Int32.Parse(txtNum1.Text) <= 0 ....
コードでその値を複数回再利用する予定がある場合は、変数で抽出できます。
また、コメントで指摘されているように、無効な番号を確認する必要がありますInt32.TryParse(value, number)
。したがって、TryParse(..)
メソッドが を返すfalse
場合は、ケースを処理できます。
この方法がどのように機能するかを正確に知るには、これを読むことができます
しかし、迅速にするためにvalue
は、解析したい文字列であり、文字列からnumber
解析される整数値です。メソッド自体はboolean
(解析に成功した場合は true、false
それ以外の場合は true)を返します。
文字列から数値への適切な変換を使用する
Dim res1 As Integer
Dim res2 as Integer
if Not Int.TryParse(txtNum1.Text, res1) then
lblResult.Text = "Enter a valid first number "
return
End If
if Not Int.TryParse(txtNum2.Text, res2) then
lblResult.Text = "Enter a valid second number "
return
End If
If res1 <= 0 OrElse res2 <= 0 Then
lblResult.Text = "Result Error: Enter numbers greater than zero"
End If
ユーザー入力を数値に変換する必要があります。テキスト ボックスの Text プロパティは、数値ではなく文字列です。また、変換する場合は、不適切な入力 (数値以外の値など) を受け取る準備ができている必要があります。
最善の方法は、ユーザーが入力した値を数値に変換しようとする Int.TryParse を使用することです。失敗した場合は false を返します。成功した場合、変換された数値が 2 番目の引数で見つかります。
前者は短絡評価を使用するため、Or の代わりにOrElseを使用する必要があることにも注意してください。
エラー メッセージから明らかな別の落とし穴について警告したいと思います。VB コンパイラは、2 つの文字列を数値に変換する手助けをしようとしました。これは私の観点からは非常に悪いことです。コンパイラの自動変換を無効にして、この種の変換を処理する責任を負う必要があります。プロジェクト、ページCompile
、およびセットのプロパティに移動しますthe Option Strict to ON
。このようにして、コンパイラはこの自動変換を停止し、エラーとしてシグナルを送信します。textBox1.Text <= 0
このようなものが良いでしょう、
int かどうかを確認してから、ゼロ以下かどうかを確認します
Dim value1, value2 As Integer
If not Integer.TryParse(txtNum1.text, value1) orelse value1 <= 0 OrElse not Integer.TryParse(txtNum2.text, value2) orelse value2 <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
あなたの比較は正常に機能しません。同じ型 (文字列と整数) を使用していません。
コードは次のようになります。
dim n1 as integer
dim n2 as integer
if integer.tryparse(txtNum1.Text,n1) and integer.tryparse(txtnum2.text,n2) then
If n1 <= 0 Or n2 <= 0 Then
lblResult.Text = "Result Error: Enter in a number graeter than zero"
End If
else
lblResult.Text = "please input numbers"
end if