如何将数据传递给其他类中的方法?

在编程方面,我还是个傻瓜,决定我想测试自己的极限并制作井字游戏。我敢肯定,有很多更好的方法可以做我想做的事情,但是我仍然在学习。在测试到目前为止的内容时,我一直遇到这个问题,要求用户输入位置(位置为1-9,这些位置最终将用于告诉程序将用户放置在哪里X或O)。我现在有2个班级,主要班级和董事会班。通过放置停止标记进行一些调试之后,我意识到当我从我的主类的board类中调用一个方法时,放入该方法的参数中的数据不会继续

主类:

class Program {
        static void Main(string[] args) {
            Board board = new Board();

            bool hasWon = false;

            string p1;
            string p2;
            string pos;
            int turn = 2;

            Console.Write("Please enter a name for player 1: ");
            p1 = Console.ReadLine();
            Console.Clear();
            Console.Write("Please enter a name for player 2: ");
            p2 = Console.ReadLine();
            Console.Clear();

            while (hasWon == false) {
                if (turn % 2 == 0) {
                    Console.WriteLine(p1 + "'s Turn / You are X's");
                    board.DisplayBoard();
                    Console.WriteLine();
                    Console.WriteLine("Please selecet a position: ");
                    board.SetPos(Console.ReadLine());

                    Console.WriteLine("Position correctly set: " + board.GetPos());
                } else {
                    Console.WriteLine(p2 + "'s Turn / You are O's");
                    board.DisplayBoard();
                    Console.WriteLine();
                    Console.WriteLine("Please selecet a position: ");
                    board.SetPos(Console.ReadLine());

                    Console.WriteLine("Position correctly set: " + board.GetPos());
                }
            }
        }
    }

董事会课程:

public class Board {

        private string pos = "";
        private string badPos = "";
        public void DisplayBoard() {
            Console.WriteLine(" 1 | 2 | 3 ");
            Console.WriteLine("-----------");
            Console.WriteLine(" 4 | 5 | 6");
            Console.WriteLine("-----------");
            Console.WriteLine(" 7 | 8 | 9 ");
        }

        public void SetPos(string pos) {
            if (this.pos.Length > 1 || this.pos.Length < 1) {
                this.pos = badPos;
                IncorrectPosition();
            } else if (!this.pos.Contains("1") || this.pos.Contains("2") || this.pos.Contains("3") || this.pos.Contains("4") ||
                this.pos.Contains("5") || this.pos.Contains("6") || this.pos.Contains("7") || this.pos.Contains("8") ||
                this.pos.Contains("9")) {
                this.pos = badPos;
                IncorrectPosition();
            } else {
                this.pos = pos;
            }
        }

        public string GetPos() {
            return pos;
        }

        /*public void setTurn(int turn) {
            turn = this.turn;
        }*/

        private void IncorrectPosition() {
            Console.Clear();
            Console.WriteLine(badPos + " is not a correct position");
            Console.Write("Please enter a position: ");
            SetPos(Console.ReadLine());
        }

    }

更具体地说,该问题发生在Main类中。当要求用户输入位置时,他们通过输入数字1-9进行输入。在Board类中,有一种名为SetPos的方法,该方法将用于确定稍后在开发X或O时将其放置在何处。但是,我还有一种方法可以确保用户输入的数字是1-9。我不想将其转换为整数,我希望其保留为字符串。每当用户为该职位输入任何内容时,都不会继承任何内容。当使用停止标记并逐步执行程序时,在监视列表中,我可以看到将哪些值分配给了哪些变量,我的pos变量确实得到了分配给我输入的内容,但随后丢失了,因此重复SetPos和IncorrectPosition。在控制台上显示IncorrectPosition时,它会显示

位置不正确
 请输入职位:

在SetPos()方法中,我尝试了一些方法来解决此问题,其中之一是我添加了badPos变量,这意味着如果if语句中的前两件事中的任何一个为true,则该值为通过我的主类中的SetPos()方法传递的代码将分配给 badPos ,但是当打印到控制台时,屏幕上没有显示任何值,这是另一种告诉方法我没有任何价值。

我不确定如何解决此问题,非常感谢您的帮助!

sixupiaofubud 回答:如何将数据传递给其他类中的方法?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3103788.html

大家都在问