将 TryParse 与 double 结合使用会显示过载错误?

发布于 2024-11-23 15:37:40 字数 3495 浏览 3 评论 0原文

我正在编写一个程序并使用 double.Try Parse 来检查字符串是否是数字。

class Game{ // declares the class
    private static string[,] board = new string[3, 3]{
                                          {" ", " ", " "}, // top row
                                          {" ", " ", " "}, // middle row
                                          {" ", " ", " "}  // bottom row
                                      };


private static void print(){
    System.Console.WriteLine("\n {0} | {1} | {2} ", board[2, 0], board[2, 1], board[2, 2]);
    System.Console.WriteLine("------------");
    System.Console.WriteLine(" {0} | {1} | {2} ", board[1, 0], board[1, 1], board[1, 2]);
    System.Console.WriteLine("------------");
    System.Console.WriteLine(" {0} | {1} | {2} \n", board[0, 0], board[0, 1], board[0, 2]);
}

private static void calculateMoves(){
    System.Console.Write("The possible moves are: ");
    int n = 1; // this is used to list all possible moves.
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++){
            if (board[i, j] == " "){
                System.Console.Write("{0} ", n);
            }
            n++;
        }
    } // end print possible moves.
    System.Console.WriteLine(); // go to next line
}

public static bool isNumeric(string s){ // this functions checks if the input string is numeric.
    double Result;
    return double.TryParse(s, out Result);
}        

static void Main(){ 
// the main function, the program starts from (this is a method declartion)
    System.Console.WriteLine("\nWelcome to theelitenoob's simple tic tac toe game!");
    System.Console.WriteLine("Written in C#, released under the GPL.");
    System.Console.WriteLine("The board is 3 by 3, Type a number to place a move there.");
    System.Console.WriteLine("So 1 is bottom left and 9 is top right, like a standard keypad.\n");
    int winner = 0; // there is no winner yet.
    // write players piece
    System.Console.WriteLine("You are x");
    // create the board
    int move; // move number
    string input; // the string from which move number is got from
    while(winner == 0){
        print();
        calculateMoves();
        System.Console.Write("Please type in a move number: ");
        input = System.Console.ReadLine();
        if(!isNumeric(input)){ // check if input is *not* numeric
            // if it isn't, print message and ask for input again.
            System.Console.WriteLine("Thats not a valid move, Try again!");
            continue;
        }
        move = System.Convert.ToInt32(input);
        /**/
        if (move == 1 && board[0, 0] == " ")board[0, 0] = "x";
        if (move == 2 && board[0, 1] == " ")board[0, 1] = "x";
        if (move == 3 && board[0, 2] == " ")board[0, 2] = "x";
        if (move == 4 && board[1, 0] == " ")board[1, 0] = "x";
        if (move == 5 && board[1, 1] == " ")board[1, 1] = "x";
        if (move == 6 && board[1, 2] == " ")board[1, 2] = "x";
        if (move == 7 && board[2, 0] == " ")board[2, 0] = "x";
        if (move == 8 && board[2, 1] == " ")board[2, 1] = "x";
        if (move == 9 && board[2, 2] == " ")board[2, 2] = "x";
    } // end while loop
}

}

然而。它向我显示一个错误:每当我尝试编译时,我都浏览了所有 msdn 并搜索了 google,但不知道如何修复。

这是我得到的错误:

tictactoe.cs(33,23): error CS1501: No overload for method 'TryParse' takes '2' arguments

有谁知道为什么会发生这种情况以及如何解决它?

i was writing a program and using double.Try Parse to check if a string is numeric.

class Game{ // declares the class
    private static string[,] board = new string[3, 3]{
                                          {" ", " ", " "}, // top row
                                          {" ", " ", " "}, // middle row
                                          {" ", " ", " "}  // bottom row
                                      };


private static void print(){
    System.Console.WriteLine("\n {0} | {1} | {2} ", board[2, 0], board[2, 1], board[2, 2]);
    System.Console.WriteLine("------------");
    System.Console.WriteLine(" {0} | {1} | {2} ", board[1, 0], board[1, 1], board[1, 2]);
    System.Console.WriteLine("------------");
    System.Console.WriteLine(" {0} | {1} | {2} \n", board[0, 0], board[0, 1], board[0, 2]);
}

private static void calculateMoves(){
    System.Console.Write("The possible moves are: ");
    int n = 1; // this is used to list all possible moves.
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++){
            if (board[i, j] == " "){
                System.Console.Write("{0} ", n);
            }
            n++;
        }
    } // end print possible moves.
    System.Console.WriteLine(); // go to next line
}

public static bool isNumeric(string s){ // this functions checks if the input string is numeric.
    double Result;
    return double.TryParse(s, out Result);
}        

static void Main(){ 
// the main function, the program starts from (this is a method declartion)
    System.Console.WriteLine("\nWelcome to theelitenoob's simple tic tac toe game!");
    System.Console.WriteLine("Written in C#, released under the GPL.");
    System.Console.WriteLine("The board is 3 by 3, Type a number to place a move there.");
    System.Console.WriteLine("So 1 is bottom left and 9 is top right, like a standard keypad.\n");
    int winner = 0; // there is no winner yet.
    // write players piece
    System.Console.WriteLine("You are x");
    // create the board
    int move; // move number
    string input; // the string from which move number is got from
    while(winner == 0){
        print();
        calculateMoves();
        System.Console.Write("Please type in a move number: ");
        input = System.Console.ReadLine();
        if(!isNumeric(input)){ // check if input is *not* numeric
            // if it isn't, print message and ask for input again.
            System.Console.WriteLine("Thats not a valid move, Try again!");
            continue;
        }
        move = System.Convert.ToInt32(input);
        /**/
        if (move == 1 && board[0, 0] == " ")board[0, 0] = "x";
        if (move == 2 && board[0, 1] == " ")board[0, 1] = "x";
        if (move == 3 && board[0, 2] == " ")board[0, 2] = "x";
        if (move == 4 && board[1, 0] == " ")board[1, 0] = "x";
        if (move == 5 && board[1, 1] == " ")board[1, 1] = "x";
        if (move == 6 && board[1, 2] == " ")board[1, 2] = "x";
        if (move == 7 && board[2, 0] == " ")board[2, 0] = "x";
        if (move == 8 && board[2, 1] == " ")board[2, 1] = "x";
        if (move == 9 && board[2, 2] == " ")board[2, 2] = "x";
    } // end while loop
}

}

However. it shows me an error: whenever i try to compile, i went through all of msdn and searched google, but can't figure out how to fix.

This is the error i get:

tictactoe.cs(33,23): error CS1501: No overload for method 'TryParse' takes '2' arguments

does anyone know why this happens and how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹苦笑 2024-11-30 15:37:41

Double.TryParse 方法 有两个重载:

前者从 .NET 1.1 开始就存在,而后者是在 .NET 2.0 中引入的。


Mono 附带两个编译器:

  • mcs -- 旨在实现不带泛型的最新 .NET 版本 (<.NET 2.0)

  • gmcs -- 旨在实现带泛型的最新 .NET 版本 (>= .NET 2.0)

因此 mcs 不知道新的重载。它相当过时,而且没有积极维护。

使用 gmcs 获取最新的 C# 和 .NET 版本。

The Double.TryParse Method has two overloads:

The former exists since .NET 1.1, while the latter was introduced in .NET 2.0.


Mono ships with two compilers:

  • mcs -- aims to implement the latest .NET version without generics (< .NET 2.0)

  • gmcs -- aims to implement the latest .NET version with generics (>= .NET 2.0)

So mcs doesn't know about the new overload. It's pretty outdated and afaik not actively maintained.

Use gmcs for the latest C# and .NET version.

云柯 2024-11-30 15:37:41

看起来你必须用大写 D 来表示 Double.TryParse。

It looks like you have to say Double.TryParse with a capital D.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文