2017-06-02 66 views
1

好吧,所以我今天早些時候開始這個程序,以實踐我迄今爲止學到的東西。我幾乎完成了它,除了我無法在中間獲得這個聲明來爲我工作。對於數學運算中的選擇,我希望如果用戶選擇一個我沒有的選項,它會告訴他它不是一個選項並關閉/重新啓動,但由於某種原因,else語句在它說明它不是無論我選擇實際操作,操作。這是我的代碼。第一天程序員其他語句爲計算器程序

using System; 

class Program 
{ 
    //varibale for do-while loop 
    private static string endAnswer; 
    public static void Main() // <----- The Entry point 
    { 
     //Variables 
     string Choice1; 
     string mathChoice; 
     int Num1; 
     int Num2; 
     int Answer; 

     Console.WriteLine("Would you like to use Lane's Custom Calculator? "); 
     Choice1 = Console.ReadLine(); 

     if (Choice1 == "Yes") 
     { 
      do 
      { 
       Console.WriteLine("Would you like to Add, Subtract, Multiply, or Divide? (Case Sensitive)"); 
       mathChoice = Console.ReadLine(); 

       //User inputs the 2 numbers 


       //Math Choices 
       if (mathChoice == "Add") 
       { 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1 + Num2; 
        Console.WriteLine("The answer is: " + Answer); 
       } 

       if (mathChoice == "Subtract") 
       { 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1 - Num2; 
        Console.WriteLine("The answer is: " + Answer); 
       } 

       if (mathChoice == "Multiply") 
       { 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1 * Num2; 
        Console.WriteLine("The answer is: " + Answer); 
       } 

       if (mathChoice == "Divide") 
       { 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1/Num2; 
        Console.WriteLine("The answer is: " + Answer); 
       } 
//This is the else statement that is giving me problems!! 
       else 
       { 
        Console.WriteLine("This is not an option! Shutting Down.."); 
        Console.ReadKey(); 
        Environment.Exit(0); 
       } 


       //varibale for while loop to continue if selected Yes. 
       Console.WriteLine("Another Equation? "); 
       endAnswer = Console.ReadLine(); 



      } while (endAnswer == "Yes"); 


      //Goodbye Message 
      Console.WriteLine("Thank you for using my program, goodbye "); 
      Console.ReadKey(); 
      Environment.Exit(0); 
     } 
      **//If someone selects no for wanting to use my program. 
     else 
     { 
      Console.WriteLine("Not and option...exiting Program..."); 
      Console.ReadKey(); 
      Environment.Exit(0); 
     }** 
    } 
} 
+1

而不是多個If語句,請嘗試Switch語句。這個比較好。 – Bej

+1

在調試器中逐步執行代碼... –

+1

或者將您的第二,第三和第四個'if'語句更改爲'else if' – Deolus

回答

1

這個問題是由於if塊的多次使用,而是使用if - else if - else塊作爲你的程序,那麼只有它會起作用。 爲「如果一部分」你的代碼結構應該像

`if(mathChoice == "Add") 
{ 
//code 
} 
else if(mathChoice == "Substract") 
{ 
//code 
} 
else if(mathChoice == "Multiply") 
{ 
//code 
} 
else if(mathChoice == "Divide") 
{ 
//code 
} 
else{ 
//This is not an option! Shutting Down.. 
}` 
+0

非常感謝! – Laneciar

0

爲什麼你的代碼沒有工作的原因,是你有多個if語句,但沒有elseIf-else是一個完整的塊。 else只會對應一個if語句。所以你可以做的是製作一個if-else級聯,最後只有一個else--你可以在其中定義你的回退。

就你而言,我強烈建議使用switch聲明。 它只會讓你的代碼更清晰。

它和if-else語句幾乎相同。你可以閱讀更多關於開關here

代碼:

switch (mathChoice.ToLower()) 
      { 
       case "add": 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1 + Num2; 
        Console.WriteLine("The answer is: " + Answer); 
        break; 

       case "substract": 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1 - Num2; 
        Console.WriteLine("The answer is: " + Answer); 
        break; 

       case "multiply": 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1 * Num2; 
        Console.WriteLine("The answer is: " + Answer); 
        break; 

       case "divide": 
        Console.WriteLine("What 2 numbers would you like to use?"); 
        Console.Write("Number 1 is: "); 
        Num1 = int.Parse(Console.ReadLine()); 

        Console.Write("Number 2 is: "); 
        Num2 = int.Parse(Console.ReadLine()); 
        Answer = Num1/Num2; 
        Console.WriteLine("The answer is: " + Answer); 
        break; 

       default: 
        Console.WriteLine("This is not an option! Shutting Down.."); 
        Console.ReadKey(); 
        Environment.Exit(0); 
        break; 

      } 

現在,兩件事情我想討論:

  1. 我注意到,你有你的輸入區分大小寫。沒有必要這樣做。你可以簡單地做somestring.ToLower(),它會將它轉換成小寫。然後,您只需將其與小寫字符串進行比較。
  2. 如果您閱讀關於switch語句的信息,您將瞭解到default。我只想指出,default是一個後備值,如果沒有與任何case元素匹配,則會選擇該值。
+0

謝謝你,這對我幫助很大! – Laneciar

+0

@Laneciar如果它爲你工作,請考慮接受它作爲答案,通過點擊標記。 –