2016-04-12 36 views
-3

循環消息框!

我有一個循環MessageBox發生錯誤後,我想知道如何解決它。我試圖返回Calculate()方法,我認爲這是問題,但我不知道。C#的例外循環消息框

namespace WindowsFormsApplication7 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     public int division = 0; 
     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 
     private decimal Calculate() 
     { 
      // This array is to hold the logical operators 
      string[] allowed = { "+", "-", "*", "/" }; 

      // If the right operator is selceted then perform the action and return result 
      if (operate.Text == "+") 
      { 
       decimal division = Convert.ToDecimal(operand1.Text) + Convert.ToDecimal(operand2.Text);     
      } 
      else if (operate.Text == "-") 
      { 
       decimal division = Convert.ToDecimal(operand1.Text) - Convert.ToDecimal(operand2.Text); 
      } 
      else if (operate.Text == "*") 
      { 
       decimal division = Convert.ToDecimal(operand1.Text) * Convert.ToDecimal(operand2.Text); 
      } 
      else if (operate.Text == "/") 
      { 
       decimal division = (Convert.ToDecimal(operand1.Text)/Convert.ToDecimal(operand2.Text));    
      } 
      // if the operator is not something within the array then display message 
      else if (!allowed.Contains(operate.Text)) 
      { 
       string msg = string.Format("Not a valid operater {0}Please Enter one of the Following:{0}{1}" 
       , Environment.NewLine, string.Join(Environment.NewLine, allowed)); 
       MessageBox.Show(msg); 
       operate.Text = "";    
      } 
      return Calculate(); 
     } 
+0

需要聲明'division'在你的方法的頂部,返回底部。 – LarsTech

+0

'return Calculate();'遞歸調用函數永遠, –

回答

0

嘗試

private decimal Calculate() 
{ 
    // This array is to hold the logical operators 
    string[] allowed = { "+", "-", "*", "/" }; 

    decimal result = 0m; 
    // If the right operator is selected then perform the action and return result 
    if (operate.Text == "+") 
    { 
      result = Convert.ToDecimal(operand1.Text) + Convert.ToDecimal(operand2.Text);     
    } 
    else if (operate.Text == "-") 
    { 
      result = Convert.ToDecimal(operand1.Text) - Convert.ToDecimal(operand2.Text); 
     } 
     else if (operate.Text == "*") 
     { 
      result = Convert.ToDecimal(operand1.Text) * Convert.ToDecimal(operand2.Text); 
     } 
     else if (operate.Text == "/") 
     { 
      result = (Convert.ToDecimal(operand1.Text)/Convert.ToDecimal(operand2.Text));    
     } 
     // if the operator is not something within the array then display message 
     else if (!allowed.Contains(operate.Text)) 
     { 
      string msg = string.Format("Not a valid operater {0}Please Enter one of the Following:{0}{1}" 
     , Environment.NewLine, string.Join(Environment.NewLine, allowed)); 

      MessageBox.Show(msg); 

      operate.Text = ""; 

     } 

    return result; 

} 
0

//試試這個

 private void button1_Click(object sender, EventArgs e) 
     { 
      result.Text = Calculate().ToString(); 
     } 


     private decimal Calculate() { 

      decimal division = 0; 

      // This array is to hold the logical operators 
     string[] allowed = { "+", "-", "*", "/" }; 

      // If the right operator is selceted then perform the action and return result 
      if (operate.Text == "+") 
      { 
       division = Convert.ToDecimal(operand1.Text) + Convert.ToDecimal(operand2.Text); 
    } 
      else if (operate.Text == "-") 
      { 
       division = Convert.ToDecimal(operand1.Text) - Convert.ToDecimal(operand2.Text); 
} 
      else if (operate.Text == "*") 
      { 
       division = Convert.ToDecimal(operand1.Text) * Convert.ToDecimal(operand2.Text); 
      } 
      else if (operate.Text == "/") 
      { 
       division = (Convert.ToDecimal(operand1.Text)/Convert.ToDecimal(operand2.Text)); 
      } 
      // if the operator is not something within the array then display message 
      else if (!allowed.Contains(operate.Text)) 
      { 
       string msg = string.Format("Not a valid operater {0}Please Enter one of the Following:{0}{1}" 
       , Environment.NewLine, string.Join(Environment.NewLine, allowed)); 
MessageBox.Show(msg); 
       operate.Text = ""; 
      } 
      return division; 
     } 

    }