Member 12167639 Ответов: 3

Мне нужно получить положительный результат числа в 3 текстовых полях


У меня есть 3 текстовых поля и 2 текстовых поля, значение которых может быть больше нуля, а значение одного текстового поля равно 0 . Но мне нужно, чтобы результат 3 значений текстового поля был положительным. for. eg:5*5*0=25

try
           {
               if (txtNumber.Text == string.Empty)
               {
                   number = (txtNumber.Text == string.Empty || txtNumber.Text == "0") ? 0 :
                   Convert.ToInt32(txtNumber.Text);

               }
               else
               {
                   number = Convert.ToInt32(txtNumber.Text);
               }

               if (txtLength.Text == string.Empty)
               {
                   lenght = (txtLength.Text == string.Empty || txtLength.Text == "0") ? 0 :
                   Convert.ToDouble(txtLength.Text);

               }
               else
               {
                   lenght = Convert.ToDouble(txtLength.Text);
               }
               if (txtHeight.Text == string.Empty)
               {
                   height = (txtHeight.Text == string.Empty || txtHeight.Text == "0") ? 0 :
                   Convert.ToDouble(txtHeight.Text);

               }
               else
               {
                   height = Convert.ToDouble(txtHeight.Text);
               }
               if (txtBreadth.Text == string.Empty)
               {
                   breadth = (txtBreadth.Text == string.Empty || txtBreadth.Text == "0") ? 0 :
                   Convert.ToDouble(txtBreadth.Text);
               }
               else
               {
                   breadth = Convert.ToDouble(txtBreadth.Text);
               }

               txtQuantity.Text = (number * lenght * breadth * height).ToString();

           }
           catch (Exception)
           {
               MessageBox.Show("Error occured, Please try again!!!");
           }


Что я уже пробовал:

Мне нужно получить положительный результат числа в 3 текстовых полях

ZurdoDev

Где ты застрял?

PeejayAdams

Я вижу там много проблем. Во - первых, не проверяйте число непосредственно из строки-вы проверяете "0", но "0.00", ".0" и многие другие вещи приравниваются к нулю. Ваш тест на "0 "на самом деле отрицается в любом случае, поскольку вы фактически говорите" Если (пусто) ... если ([то, что мы уже знаем, истинно] или [не имеет значения, что здесь происходит, потому что у нас уже есть истина]) Ваш блок try ... catch будет ловить только исключения, и вы можете генерировать довольно много из них - как бы вы узнали, откуда взялось исключение? А как насчет отрицательных значений?

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

3 Ответов

Рейтинг:
2

Richard MacCutchan

if (txtNumber.Text == string.Empty)
{
   number = (txtNumber.Text == string.Empty || txtNumber.Text == "0") ? 0 :
   Convert.ToInt32(txtNumber.Text);

}

Какой смысл проверять "0" или преобразовывать в целое число, если вы уже установили, что текстовое поле пусто? Вы должны просто использовать int.TryParse на каждой текстовой строке, чтобы вы могли правильно проверить входные данные.


Рейтинг:
0

0x01AA

Здесь Как создать числовое текстовое поле[^] вы найдете отличный пример из MSDN для решения вашего запроса в целом и многократного использования. Это NumericTextBox, производный от TextBox.

преимущество:
а.) Вы узнаете самые основы программирования пользовательских элементов управления. Не бойтесь, этот пример невелик,поэтому легко получить обзор.
б) вы можете повторно использовать компонент в любом другом из ваших приложений.

Надеюсь, это поможет.


Рейтинг:
0

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.

Всего 1 проблема:

if (txtNumber.Text == string.Empty)
{
    number = (txtNumber.Text == string.Empty || txtNumber.Text == "0") ? 0 :
    Convert.ToInt32(txtNumber.Text);

}
может быть упрощен до
if (txtNumber.Text == string.Empty)
{
    number = 0;

}