2016-01-06 4 views
-1

Я должен проверить несколько входов пользователь делает, и отправить сообщение об ошибкеIF логическое выражение, порядок проверки входных данных

это то, что я до сих пор

// probes the methods to check for validity. 
private void btnCalculate_Click(object sender, EventArgs e) 
{ 
    if (!(ValidWidth(float.Parse(txtWidth.Text)))) 
    { 
     return; 
    } 
    if (!(ValidLength(float.Parse(txtLength.Text)))) 
    { 
     return; 
    } 
    if (!(ValidDepth(float.Parse(txtAvgDepth.Text)))) 
    { 
     return; 
    } 
} 

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

вот мои методы

/** Created a boolean method to test if the written width is valid OR not valid **/ 
private bool ValidWidth(float Width1) { 
    float Width = float.Parse(txtWidth.Text); 
    { 
     if (Width >= 2 & Width <= 20) 
     { 
      return true; 
     } 
     else 
     { 
      string Title = "Data Invalid"; 
      string Msg = "Width Measurement is invalid \n Place enter a value between 2 and 20"; 
      DialogResult Response; 

      Response = MessageBox.Show(Msg, Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
      return false; 
     } 
    } 
} 

/** Created a boolean method to test if the written legnth is valid OR not valid **/ 
private bool ValidLength(float Length1) 
{ 
    float Length = float.Parse(txtLength.Text); 
    { 
     if (Length >= 5 & Length <= 50) 
     { 
      return true; 
     } 
     else 
     { 
      string Title = "Data Invalid"; 
      string Msg = "Legnth Measurement is invalid \n Place enter a value between 5 and 50"; 
      DialogResult Response; 

      Response = MessageBox.Show(Msg, Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
      return false; 
     } 
    } 
} 

/** Created a boolean method to test if the written legnth is valid OR not valid **/ 
private bool ValidDepth(float Depth1) 
{ 
    float Depth = float.Parse(txtAvgDepth.Text); 
    if (Depth >= 2 & Depth <= 4) 
    { 
     return true; 
    } 
    else 
    { 
     string Title = "Data Invalid"; 
     string Msg = "Average Depth Measurement is invalid \n Place enter a value between 2 and 4"; 
     DialogResult Response; 

     Response = MessageBox.Show(Msg, Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
     return false; 
    } 
} 
+0

Когда вы искали сообщение об исключении, какие сообщения SO вы нашли? –

+0

Прежде чем исправить это, проверьте свою функцию проверки, они не использовали переданное значение. – mbm

+0

Вы забыли самую важную информацию - фактическое исключение. Что он содержит? –

ответ

2

Метод Parse будет бросать исключение, если вы подаете ему пустую строку. Вы должны поймать это исключение или использовать TryParse.

1

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

Я думаю, что это лучше.

private void btnCalculate_Click(object sender, EventArgs e) 
{ 
    if(!ValidateWidth(txtWidth.Text) || 
     !ValidateLength(txtLength.Text) || 
     !ValidateDepth(txtAvgDepth.Text)) // if any of these failed 
    { 
     MessageBox.Show(Msg, Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
    } 
} 

Я пишу ValidateWidth для вас в качестве примера.

private string Title = "Data Invalid"; 
private string Msg; 

private bool ValidateWidth(string input) 
{ 
    float width; 

    if(float.TryParse(input, out width)) 
    { 
     if (Width >= 2 && Width <= 20) 
     { 
      return true; 
     } 
    } 

    Msg = "Width Measurement is invalid \n Place enter a value between 2 and 20"; 

    return false; 
} 
+0

как вы возвращаете true или false, когда метод недействителен? – Minosum

+0

@ Minosum это была ошибка. это должно быть bool –

Смежные вопросы