【问题标题】:IF and Else Statement Exception Handling Help - Else message does not workIF 和 Else 语句异常处理帮助 - Else 消息不起作用
【发布时间】:2019-07-03 22:10:04
【问题描述】:

else 语句不起作用,当控制台的输入不是 Rock、Paper 或 Scissors 时,不会显示异常消息。这是什么原因。

using System;

namespace Rock__Paper__Scissors_
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Lets play a game of Rock, Paper, Scissors.");
            Console.Write("Enter Rock, Paper or Scissors:");
            string userChoice = Console.ReadLine();

            Random r = new Random();
            int computerChoice = r.Next(3);

            //0 = Scissors
            if (computerChoice == 0)
            {
                if (userChoice == "Scissors")
                {
                    Console.WriteLine("Computer chose scissors!");
                    Console.WriteLine("TIE!");
                }

                else if (userChoice == "Rock")
                {
                    Console.WriteLine("Computer chose Scissors!");
                    Console.WriteLine("You WIN!");
                }

                else if (userChoice == "Paper")
                {
                    Console.WriteLine("Computer chose Scissors");
                    Console.WriteLine("You LOSE!");

                }
            }

            //1 = Rock
            else if (computerChoice == 1)
            {
                if (userChoice == "Scissors")
                {
                    Console.WriteLine("Computer chose Rock!");
                    Console.WriteLine("You LOSE!");
                }

                else if (userChoice == "Rock")
                {
                    Console.WriteLine("Computer chose Rock!");
                    Console.WriteLine("TIE!");
                }

                else if (userChoice == "Paper")
                {
                    Console.WriteLine("Computer chose Rock");
                    Console.WriteLine("You WIN!");
                }
            }

            //2 = Paper
            else if (computerChoice == 2)
            {
                if (userChoice == "Scissors")
                {
                    Console.WriteLine("Computer chose Paper!");
                    Console.WriteLine("You WIN");
                }

                else if (userChoice == "Rock")
                {
                    Console.WriteLine("Computer chose Paper!");
                    Console.WriteLine("You LOSE!");
                }

                else if (userChoice == "Paper")
                {
                    Console.WriteLine("Computer chose Paper");
                    Console.WriteLine("TIE!");
                }
            }

            //3 = Exception Handling
            else
            {
                Console.WriteLine("You must enter Rock, Paper or Scissors");
            }


        }
    }
}

【问题讨论】:

  • 你试过调试吗?尝试使用调试器单步执行代码。您所指的“其他”,应该说“You must enter Rock, Paper or Scissors”的那个只有当computerChoice不是012之一时才会显示。它不依赖于用户输入(RockPaperScissors)。
  • 你在电脑的选择上有'else'
  • 啊,好吧,这是有道理的。我会尝试一些不同的东西。谢谢。
  • 是的...else 永远不会成功,因为computerChoice 总是介于 0 和 2 之间
  • 你真的应该扩展“else statement doesn't work”评论

标签: c# if-statement exception


【解决方案1】:

在继续之前检查值或userChoice...我的偏好是使用while 循环

using System;

namespace Rock__Paper__Scissors_
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Lets play a game of Rock, Paper, Scissors.");
            Console.Write("Enter Rock, Paper or Scissors:");
            string userChoice = Console.ReadLine();

            //Check it here in a while loop, until the user gets it 
            //right, the program will not proceed and loop here
            while (userChoice != "Scissors" || userChoice != "Rock" || userChoice != "Paper")
            {
                Console.Write("You must enter Rock, Paper or Scissors");
                userChoice = Console.ReadLine();
            }

            Random r = new Random();
            int computerChoice = r.Next(3);

            //0 = Scissors
            if (computerChoice == 0)
            {
                if (userChoice == "Scissors")
                {
                    Console.WriteLine("Computer chose scissors!");
                    Console.WriteLine("TIE!");
                }

                else if (userChoice == "Rock")
                {
                    Console.WriteLine("Computer chose Scissors!");
                    Console.WriteLine("You WIN!");
                }

                else if (userChoice == "Paper")
                {
                    Console.WriteLine("Computer chose Scissors");
                    Console.WriteLine("You LOSE!");

                }
            }

            //1 = Rock
            else if (computerChoice == 1)
            {
                if (userChoice == "Scissors")
                {
                    Console.WriteLine("Computer chose Rock!");
                    Console.WriteLine("You LOSE!");
                }

                else if (userChoice == "Rock")
                {
                    Console.WriteLine("Computer chose Rock!");
                    Console.WriteLine("TIE!");
                }

                else if (userChoice == "Paper")
                {
                    Console.WriteLine("Computer chose Rock");
                    Console.WriteLine("You WIN!");
                }
            }

            //2 = Paper
            else if (computerChoice == 2)
            {
                if (userChoice == "Scissors")
                {
                    Console.WriteLine("Computer chose Paper!");
                    Console.WriteLine("You WIN");
                }

                else if (userChoice == "Rock")
                {
                    Console.WriteLine("Computer chose Paper!");
                    Console.WriteLine("You LOSE!");
                }

                else if (userChoice == "Paper")
                {
                    Console.WriteLine("Computer chose Paper");
                    Console.WriteLine("TIE!");
                }
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    添加了更多 if/if else 语句而不是 else。它现在吐出我想要的异常错误。

    这样做的目的是练习/应用 if、if else 和 else 方法,因为我正在尝试学习 c# 并通过一些在线教程工作。当然可能有更好的方法来制作这款游戏​​。

    -需要添加某种循环(当我学习如何做时)。 - 计算机似乎以可预测的顺序生成随机数,而且看起来并不那么随机,所以我需要努力改进这一点。

    使用系统;

    namespace Rock__Paper__Scissors_
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Lets play a game of Rock, Paper, Scissors.");
                Console.Write("Enter Rock, Paper or Scissors:");
                string userChoice = Console.ReadLine();
    
                Random r = new Random();
                int computerChoice = r.Next(2);
    
    
                //0 = Scissors
                if (computerChoice == 0)
                {
                    if (userChoice == "Scissors")
                    {
                        Console.WriteLine("Computer chose scissors!");
                        Console.WriteLine("TIE!");
                    }
    
                    else if (userChoice == "Rock")
                    {
                        Console.WriteLine("Computer chose Scissors!");
                        Console.WriteLine("You WIN!");
                    }
    
                    else if (userChoice == "Paper")
                    {
                        Console.WriteLine("Computer chose Scissors");
                        Console.WriteLine("You LOSE!");
    
                    }
                }
    
                //1 = Rock
                else if (computerChoice == 1)
                {
                    if (userChoice == "Scissors")
                    {
                        Console.WriteLine("Computer chose Rock!");
                        Console.WriteLine("You LOSE!");
                    }
    
                    else if (userChoice == "Rock")
                    {
                        Console.WriteLine("Computer chose Rock!");
                        Console.WriteLine("TIE!");
                    }
    
                    else if (userChoice == "Paper")
                    {
                        Console.WriteLine("Computer chose Rock");
                        Console.WriteLine("You WIN!");
                    }
                }
    
                //2 = Paper
                else if (computerChoice == 2)
                {
                    if (userChoice == "Scissors")
                    {
                        Console.WriteLine("Computer chose Paper!");
                        Console.WriteLine("You WIN");
                    }
    
                    else if (userChoice == "Rock")
                    {
                        Console.WriteLine("Computer chose Paper!");
                        Console.WriteLine("You LOSE!");
                    }
    
                    else if (userChoice == "Paper")
                    {
                        Console.WriteLine("Computer chose Paper");
                        Console.WriteLine("TIE!");
                    }
                }
    
    
                //Exception Handling
                if (userChoice != "Scissors")
                {
                    Console.WriteLine("Choose Rock, Paper or Scissors");
                }
    
                else if (userChoice != "Rock")
                {
                    Console.WriteLine("Choose Rock, Paper or Scissors");
                }
    
                else if (userChoice != "Paper")
                {
                    Console.WriteLine("Choose Rock, Paper or Scissors");
                }
    
    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多