代码之家  ›  专栏  ›  技术社区  ›  codingguy3000

收款问题(.net 3.5,c)

  •  2
  • codingguy3000  · 技术社区  · 16 年前

    我被困住了,需要帮助。无论如何,我有Visual Studio 2008控制台程序,它需要为每一轮游戏记录一个日期、字符串、布尔值和一个整数。假设用户玩10局,我每局有10局。

    我想将这些记录保存在一个数据结构(我相信是收集的)中,然后在游戏结束后,通过它们循环生成一个简单的控制台报告。

    我被卡住了。这看起来很简单,但我找不到解决办法。我认为有多种方法可以实现这一点,但我正在寻找最简单的解决方案。

    5 回复  |  直到 16 年前
        1
  •  9
  •   Community Mohan Dere    9 年前

    编辑: 我想简化这个问题的答案,但也许我简化得太多了。我已经更改了下面的可变结构(这是个坏主意,谢谢提醒我 @Jon Skeet ,以及一个类和属性。


    首先,创建数据类型以保存信息:

    public class RoundInformation
    {
        public DateTime Date { get; set; }
        public String Name { get; set; }
        public Boolean DidCheat { get; set; }
    }
    

    然后创建保存列表:

    public List<RoundInformation> Rounds = new List<RoundInformation>();
    

    然后,对于每一轮,使用轮次信息数据构造一个值,并将其添加到列表中:

    RoundInformation info = new RoundInformation();
    info.Date = DateTime.Now;
    info.Name = "Bob";
    info.DidCheat = true; // Bob always cheats
    Rounds.Add(info);
    

    循环:

    foreach (RoundInformation round in Rounds)
    {
        .. dump to console, left as an excercise
    }
    
        2
  •  3
  •   Lucas Jones    16 年前

    试试这个:

    public class GameRound {
        public DateTime Date {get; set;}
        public string String {get; set;}
        public bool Boolean { get; set;}
        public int Integer { get; set; }
    }
    

    在一部分中,使用正确的变量名。

    然后,在控制台程序中,在顶部添加以下行:

    List<GameRound> rounds = new List<GameRound>();
    

    这就形成了一个回合的“列表”,可以添加、删除和“循环”通过。

    然后,当您想要添加一个圆时,使用如下代码:

    rounds.Add(new GameRound { Date = theDate, String = theString, Boolean = theBool, Integer = theInt });
    

    这是一个新的 GameRound 对象,并将所有属性设置为值。记住用日期等替换正确的名称/值。

    最后,要生成报告,请尝试以下操作:

    foreach ( GameRound round in rounds ) {
        Console.WriteLine("Date: {0}\nString: {1}\nBoolean: {2}\nInteger: {3}", round.Date, round.String, round.Boolean, round.Integer);
    }
    
        3
  •  1
  •   Greg    16 年前

    我首先要说的是面向对象的答案更好……但您确实要求最简单的解决方案。

    首先制作一个新集合:

    List<string> log = new List<string>();
    

    当你想要记录一些东西时:

    log.Add( string.Format( "Date = {0}, String = {1}, Boolean = {3}, and an integer = {4}", theDate, theString, theBool, theInt );
    

    最后:

    foreach( string logEntry in log ) Console.WriteLine( logEntry );
    
        4
  •  0
  •   Mike Gates    16 年前

    我认为你必须对你想做的事情更具体一点。通常,您需要一个数据结构来保存日期、字符串、布尔值和整数。可以使用结构或自定义类来执行此操作。您也可以使用匿名类型,但这是一个高级概念,您可能希望远离它。

    因此,要将这些元素之一添加到集合中,只需执行以下操作:

    myCollection.Add(myNewLogElement);
    

    要循环访问此集合,请执行以下操作:

    foreach (MyLogElementType logElement in myCollection
    {
       ' do something...
    }
    

    我希望这有帮助。如果你需要一个更好的答案,你需要对你正在做的事情更加具体。

    祝你好运。

        5
  •  0
  •   Manish Basantani    16 年前

    利用更多的3.0。

    public class GameRound{
        public DateTime Date { get; set; }
        public String Name { get; set; }
        public Boolean DidCheat { get; set; }
    
        public void Print()
        {
            Console.WriteLine(String.Format("Date:{0}, Name:{1}, Cheated: {2}", Date, Name, DidCheat));
        }
    }
    
    public class GameRounds : List<GameRound>{
       public void Add(DateTime date, string name, bool didCheat) {
                    this.Add(new GameRound { Date = date, Name = name, DidCheat = didCheat });
       }
    }
    
    public static void Play(){
                var gameRounds = new GameRounds();
                //Round 1
                gameRounds.Add(DateTime.Today, "ABC", false);
                //Round 2
                gameRounds.Add(DateTime.Today, "DEF", true);
    
                //Print
                foreach (var gameRound in gameRounds)
                {
                    gameRound.Print();
                }
     }