c# - 创建一个使用数组的方法并使用循环重新启动控制台应用程序

时间:2014-04-10 12:50:30

标签: c# arrays loops methods

我最谦虚的问候S.O folk,

我遇到以下评估标准的语法和语言要求。

注意:我不是在寻找明确的/"在这里你去!"答案(即:完成的作业)但我真的需要一些c#语言的指导才能完成作业。先感谢您。

这是任务简报:

  1. 为经销商生成一张卡片,使用结构显示2个随机数。
  2. 为播放器生成一张卡片,使用(相同)结构显示3个随机数。
  3. - 到目前为止,我已经能够使用帖子底部的代码执行此操作。剩下的评估标准让我陷入困境 -

    1. 要求用户输入他们想要的单个号码"播放"反对经销商赢。这些选项应存储在一个数组{0,1,2}中,该数组将被调用以运行一个方法来计算胜利者。我还必须使用TryParse方法(?)将用户输入转换为数字。 - 要运行计算赢家方法,我假设我将使用if语句:

      if (PlayerSelection > DealerCard) 
      { 
          Console.WriteLine ("You Win");
      }
      else (DealerCard > PlayerSelection) 
      { 
          Console.WriteLine ("Dealer Wins");
      }
      else if (PlayerSelection == DealerCard)
      { 
          Console.WriteLine ("It is a draw");
      }
      
    2. - 除了上述内容,我不明白使用tryParse方法将用户输入转换为数字的语法 -

      1. 最后,我必须创建一个循环,根据用户输入再次运行程序。你想再玩一次吗?用户输入是=再次运行应用程序或用户输入否=退出应用程序。
      2. 正如我所说,这是一项任务,所以我不想寻找快速答案。一些患者指导将(希望)看到我完成此任务并了解更多将非常感激。如果这项练习对某些人来说非常简单,我也很抱歉。我对c#语言和编程非常陌生。

        以下是我到目前为止的代码。正如你所看到的,我已经构建了它,所以我可以跟随自己的工作而不会迷路。我觉得自己像个蹒跚学步的孩子但嘿嘿,麻烦的东西似乎是我能真正掌握这些东西的唯一方法。我可能不太喜欢编程但是上帝我不会放弃!

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        
        namespace Assessment2_Nicole_Haines
        
        {
            class Program
            {
        
        
                static void Main(string[] args)
                {
                    card PlayerCard = new card(6,26); // Calls an instance of the card struct to create PlayerCard card
        
        card PlayerCard2 = new card(6,26); // Calls an instance of the card struct to create PlayerCard2 card
                    card PlayerCard3 = new card(6,26); // Calls an instance of the card struct to create PlayerCard3 card
        
                    card DealerCard = new card(6,26); // Calls a new instance of the struct (named card) to create the dealers card with 2 numbers
        
                    //declare an array of card
                    card[] PlayerCards = { PlayerCard, PlayerCard2, PlayerCard3 };
        
                    // Welcome text
                    Console.WriteLine("Welcome! Press the 'enter' key to play!");
                    Console.ReadLine();
        
                    // Use of struct for Dealers single card
                    Console.WriteLine("The dealers card is: {0} , {1}", DealerCard.Number1, DealerCard.Number2);  
                    Console.ReadLine();
        
                    // Use of struct for Players first card
                    Console.WriteLine("Your first card is: {0} , {1}", PlayerCard.Number1, PlayerCard.Number2);  
                    Console.ReadLine();
        
                    // Use of struct for Players second card
                    Console.WriteLine("Your second card is: {0} , {1}", PlayerCard2.Number1, PlayerCard2.Number2);
                    Console.ReadLine();
        
                    // Use of struct for Players third (and final) card
                    Console.WriteLine("Your third (and final!) card is: {0}, {1}", PlayerCard3.Number1, PlayerCard3.Number2);
                    Console.ReadLine();
        
                    // Request user input - As you can see - the rest of the code is incomplete/incorrect
        
                    Console.WriteLine("Please enter the number you wish to 'play' in order to beat the dealer:"); 
        
        
                        // Accept/Parse user input 
        // Create a while loop that runs application again if user enters Y. otherwise - exits.
        
        
        
        
                    Console.WriteLine("Would you like to play again?");
                    Console.ReadLine(); 
        
        
        
                    Console.WriteLine("You selected 'Y' Let's play again!");
                    Console.ReadLine();
        
                    Console.WriteLine("You selected 'N' See you later!");
                    Console.ReadLine();
        
                }
        
                // Struct
        
                public struct card
                {
        
                    static Random r = new Random();
                    public int Number1;
                    public int Number2;
                    public card(int Minimum, int Maximum)
                    {
                        Number1 = r.Next(Minimum, Maximum);
                        Number2 = r.Next(Minimum, Maximum);
                    }
        
                }
        
        
        
        
            }
        }
        

2 个答案:

答案 0 :(得分:0)

虽然答案非常简单,但有一个链接会有所帮助 http://www.dotnetperls.com/console-readkey

   // Call ReadKey again and test for the letter Y.
info = Console.ReadKey();
if (info.KeyChar == 'Y')
{
    Play again;
}

  // Call ReadKey again and test for the letter Y.
info = Console.ReadKey();
if (info.KeyChar == 'N')
{
   Close;
}

另外我认为你的if语句,

  if (PlayerSelection > DealerCard) 
   { 
Console.WriteLine ("You Win");
    }
  else if(DealerCard > PlayerSelection) 
  { 
Console.WriteLine ("Dealer Wins");
  }
 else if (PlayerSelection == DealerCard)
  { 
Console.WriteLine ("It is a draw");
  }
  else{Console.WriteLine("Something Went Wrong"}

至于确定谁使用tryparse获胜,

   // Call ReadKey again and test for the letter Y.
info = Console.ReadLine();
    int pleayercardvalue = tryparse(info, int32)
if (playercardvalue != playercard1.value OR playercard2.value OR playercard3.value)
{
    "Select Valid Card";
}
    else
    {
      playercardvalue
    }

这些都不是确切的代码,只是粗略的想法。

答案 1 :(得分:0)

C#中的大多数类型都有两种方法可以将字符串解析为该类型的值ParseTryParse。调用两者的语法是相同的。 TryParse方法与Parse方法的不同之处在于TryParse返回bool,表示字符串是否已解析。也就是说,通过" 1"到int.TryParse将返回true,但通过" A"将返回false。

这些方法过载了。最容易调用的是TryParse(string),它只是将要解析的字符串作为其唯一参数。它将使用应用程序的当前文化设置,无论是什么,来解析数字。这可能没问题,因为默认的Culture与Windows文化设置中指定的相同。其他重载允许您指定特定的区域性和格式选项。不要担心这些。

最后,你的循环。您可以将代码置于循环中,我会使用do . . . while循环,首先执行您现在正在执行的所有操作,确定获胜者,然后询问用户是否要再次播放。解析它们的响应(这不是对TryParse的调用,而是将它们的响应与预期响应进行比较),如果它们回答是,则循环重复。