Больше, чем общее количество мужчин

#vb.net

#vb.net

Вопрос:

Я все еще запускаю программу, но когда я ее запускаю, если я ввожу число в текстовое поле, также отображается окно сообщений.

Как написать хороший код для этого — когда, если у меня есть общее количество мужчин, и я введу количество коренных, и если оно больше, чем общее количество мужчин, в окне сообщения.

Пожалуйста, помогите, какой правильный код для этого.

 Private Sub TxtIM_TextChanged(sender As Object, e As EventArgs) Handles TxtIM.TextChanged
        If TxtMTotal.Text > TxtMTotal.Text Then
            MessageBox.Show("Must be Greater Than Total of Male")
        End If



    End Sub

Private Sub TxtIM_TextChanged(sender As Object, e As EventArgs) Handles TxtIM.TextChanged
        If TxtMTotal.Text > TxtMTotal.Text Then
            MessageBox.Show("Must be Greater Than Total of Male")
        End If



    End Sub
  

Комментарии:

1. Первое, что вы должны делать, это работать с числами, а не с текстом. Если вы используете Strings , «10» меньше, чем «2». Во-вторых, вы могли бы подумать о сравнении двух разных значений, а не одного значения с самим собой. Сначала немного подумайте о логике. Как бы вы это сделали, если бы использовали ручку и бумагу? Запишите ответ на этот вопрос. Теперь напишите код для реализации того, что вы только что записали. Не пытайтесь писать код, когда вы даже не знаете, что он должен делать. Вот как вы в конечном итоге получаете бессмыслицу.

2. пожалуйста, дайте мне пример кода о том, как это исправить, потому что txtMtotal — это сумма суммы 2 текстовых полей sir / maam, в то время как txtMtotal.text будет вводить пользователя, и если пользовательский ввод больше, чем значение суммы 2 введенных текстовых полей, или это будет показано в TxtTotal.text и отобразится окно сообщения.

3. Что вы не понимаете в примере кода, который вы нашли, когда попытались поискать его в Интернете?

Ответ №1:

Проблема в том, что вы пытаетесь сравнивать String типы, а не `Целочисленные типы.

Когда VB.Net сравнивает два Integer типа, он сравнивает числа, чтобы увидеть, какой из них больше. Нет проблем.

Но. При сравнении строк выполняется сравнение по отдельным символам. Допустим, у вас есть две строки .. «9» и «31». VB посмотрит на 1-й символ «9» и сравнит его с первым символом «1» во второй строке. Код символа для 9 равен 57, а код ascii для 1 равен 49. Как только VB.net при обнаружении разницы сравнение остальной части строки прекращается. Вашей второй строкой может быть «31543543», и VB все равно будет видеть «9» как большее.

Чтобы решить вашу проблему, вам нужно убедиться, что VB сравнивает числа, а не символы. Для этого существует несколько способов.

Самый простой для ваших целей

 If Integer.Parse(TxtMTotal.Text) > Integer.Parse(TxtMTotal.Text) Then
    MessageBox.Show("Must be Greater Than Total of Male")
End If
  

Комментарии:

1. Все еще сравниваю TxtMTotal.Text с самим собой 🙂 В данном случае преобразованный контент. Возможно, OP пытался сравнить содержимое TxtMTotal и TxtIM .

2. @jimi Ах да :)) Как я это пропустил? Напомните, какой сейчас год?