2012-07-11 32 views
0

有一个小程序im玩。需要确保它检查数字,如果没有循环,直到他们是每个输入上的数字,并创建一个主要方法和计算器方法的任何帮助?代码在这里/////////////////////// //////////C#添加方法和检查是否已添加数字

 int num1; 
     int num2; 
     string operand; 
     float answer; 
     string text1; 




     ////enter first number //// 
     Console.Write("Please enter a number: "); 
     text1 = Console.ReadLine(); 

     // if number not integer then fail //// 
     bool res = int.TryParse(text1, out num1); 
     if (!res) 
     { 
      Console.WriteLine(" FAIL"); 
      ////enter first number //// 
      Console.Write("Please enter a number: "); 
      text1 = Console.ReadLine(); 
     } 
     else 
     { 

     } 



     //// enter operand //// 
     Console.Write("Please enter an operand (+, -, /, *): "); 
     operand = Console.ReadLine(); 



     // enter second number // 
     Console.Write("Please enter the second number: "); 
     text1 = Console.ReadLine(); 

     // if number not integer then fail // 
     bool eff = int.TryParse(text1, out num2); 
     if (!eff) 
      do 
      { 
       Console.WriteLine(" FAIL"); 
       // enter second number // 
       Console.Write("Please enter the second number: "); 
       text1 = Console.ReadLine(); 
      } 
      while (eff == true); 
     { 

     } 
     // converts number to integer /// 


     // makes operand answers from each number //// 
     switch (operand) 
     { 
      case "-": 
       answer = num1 - num2; 
       break; 
      case "+": 
       answer = num1 + num2; 
       break; 
      case "/": 
       answer = num1/num2; 
       break; 
      case "*": 
       answer = num1 * num2; 
       break; 
      default: 
       answer = 0; 
       break; 
     } 

     /// converts numbers to string using operand and writes final line /// 
     Console.WriteLine(num1.ToString() + " " + operand + " " + num2.ToString() + " =     
     "+ answer.ToString()); 
     Console.ReadLine(); 
     } 

     } 


     } 

     } 

     /// converts numbers to string using operand and writes final line /// 
     Console.WriteLine(num1.ToString() + " " + operand + " " + num2.ToString() + " = 
     " + answer.ToString()); 
     Console.ReadLine(); 
+0

代码在哪里? – hkutluay 2012-07-11 10:09:51

+0

是的,代码在哪里? – Code0987 2012-07-11 10:10:09

+1

wats d问题? – DevT 2012-07-11 10:30:05

回答

0

如果这是你需要和你正在使用一个控制台应用程序,你可以使用:

 int num1; 
     int num2; 
     string operand = string.Empty; 
     float answer; 
     string text1; 

     ////enter first number //// 
     Console.Write("Please enter a number: "); 
     text1 = Console.ReadLine(); 

     // if number not integer then fail //// 
     bool res = int.TryParse(text1, out num1); 
     while (!res) 
     { 
      Console.WriteLine(" FAIL"); 
      ////enter first number //// 
      Console.Write("Please enter a number: "); 
      text1 = Console.ReadLine(); 
      res = int.TryParse(text1, out num1); 
     } 

     //// enter operand //// 
     while (operand == string.Empty || operand.Length > 1 || !(new char[] { '+', '-', '*', '/' }).Contains(char.Parse(operand))) 
     { 
      Console.Write("Please enter an operand (+, -, /, *): "); 
      operand = Console.ReadLine(); 
     } 


     // enter second number // 
     Console.Write("Please enter the second number: "); 
     text1 = Console.ReadLine(); 

     // if number not integer then fail // 
     bool eff = int.TryParse(text1, out num2); 
     while (!eff) 
     { 
      Console.WriteLine(" FAIL"); 
      // enter second number // 
      Console.Write("Please enter the second number: "); 
      text1 = Console.ReadLine(); 
      eff = int.TryParse(text1, out num2); 

     } 
     // converts number to integer /// 


     // makes operand answers from each number //// 
     switch (operand) 
     { 
      case "-": 
       answer = num1 - num2; 
       break; 
      case "+": 
       answer = num1 + num2; 
       break; 
      case "/": 
       if (num2 == 0) 
       { 
        Console.WriteLine("Divide By Zero Error"); 
        return; 
       } 
       answer = num1/num2; 
       break; 
      case "*": 
       answer = num1 * num2; 
       break; 
      default: 
       answer = 0; 
       break; 
     } 

     /// converts numbers to string using operand and writes final line /// 
     Console.WriteLine(num1.ToString() + " " + operand + " " + num2.ToString() + " = "+ answer.ToString()); 
     Console.ReadLine(); 

为什么你需要创建一个单独的方法很简单。我发现这太简单了,不能问,所以问问这是否是必需的?你可能已经挣扎多了,自己写了。这没有什么微不足道的。我只是假设你是编程新手。

0

该问题似乎与“eff”和“res”的处理有关。如果用户在第一次询问时键入了一个非整数值,那么他们第二次回答的内容并不重要,因为num1和num2没有用该值填充。解决这个问题,代码似乎工作。

由于输入值似乎是做同样的事情,但有一个稍微不同的提示,你应该提出这个到一个单独的功能,这样的事情:

static int GetNumberFromUser(string order) 
    { 
     string userText = String.Empty; 
     int result; 

     Console.Write("Please enter {0} number: ", order); 
     userText = Console.ReadLine(); 

     while (!int.TryParse(userText, out result)) 
     { 
      Console.WriteLine("FAILED"); 
      Console.Write("Please enter {0} number: ", order); 
      userText = Console.ReadLine(); 
     } 
     return result; 
    } 

你可以这样调用

叫它
num1 = GetNumberFromUser("first"); 
    num2 = GetNumberFromUser("second"); 

该功能负责转换为数字并持续询问,直到用户键入有效值。

“计算器”的方法也只是复制和粘贴你的交换机成一个单独的方法:

static float Calculator(int num1, string operand, int num2) 
    { 
     switch (operand) 
     { 
      case "-": 
       return num1 - num2; 
      case "+": 
       return num1 + num2; 
      case "/": 
       return num1/num2; 
      case "*": 
       return num1 * num2; 
      default: 
       return 0; 
     } 
    } 

调用使用

 answer = Calculator(num1, operand, num2); 

虽然我在这,结果行很难看,我会去这样的事情

Console.WriteLine("{0} {1} {2} = {3}", num1, operand, num2, answer); 
相关问题