Я не понимаю что я изменил - PullRequest
0 голосов
/ 06 марта 2012

Час назад я потратил много времени и закончил проект, но у меня были проблемы с его сохранением и я полностью его потерял. Тем не менее, я сделал это снова, но на этот раз это не работает

Я не уверен, что я сделал не так на этот раз ... Я думаю, что сделал то же самое, но на этот раз не работает?

Я получаю следующую ошибку:

Ошибка 1 Ссылка на объект требуется для нестатического поля, метод или свойство 'ConsoleApplication1.Program.convertir (string)' C: \ Documents and Настройки \ifiedForPersonalReasons \ Program.cs 12 45 ConsoleApplication1

Вот мой код, я собирался поместить только строки ошибок, но тогда он, вероятно, пропустил бы некоторую информацию, которая нам могла бы понадобиться для выявления проблемы:

    static void Main(string[] args)
    {
        Console.WriteLine("23.21 es " + convertir("23.21"));
        Console.ReadLine();
    }

    public string convertir(string str)
    {
        string[] arr;
        arr = str.Split('.');

        string rtn = españolizar(arr[0], "peso");

        if (arr.Length > 1)
        {
            rtn += " con " + españolizar(arr[1], "centavo");
        }

        return rtn;
    }

    public string españolizar(string str, string str2)
    {
        string[] list1 = { "cero", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince" };
        string[] list2 = { "nivelarindexes", "dieci", "veinti", "trei", "cuare", "cincue", "sese", "sete", "oche", "nove" };

        int numero = int.Parse(str);
        string strNumero = Convert.ToString(numero);

        int primerDigito = int.Parse(Convert.ToString(strNumero[0]));
        int segundoDigito = 0;

        if (strNumero.Length > 1)
        {
            segundoDigito = int.Parse(Convert.ToString(strNumero[1]));
        }

        int cases = -1;

        if (numero > -1 && numero < 16)
        {
            cases = 0;
        }
        else if (numero > 15 && numero < 30)
        {
            cases = 1;
        }
        else if (numero > 29 && numero < 100)
        {
            cases = 2;
        }
        else if (numero == 100)
        {
            cases = 3;
        }

        string rtn = "";

        switch (cases)
        {
            case 0:
                rtn = list1[numero] + " " + str2;
                if (primerDigito != 1)
                {
                    rtn += "s";
                }
                break;
            case 1:
                if (numero != 20)
                {
                    rtn = list2[primerDigito] + list1[segundoDigito];
                }
                else
                {
                    rtn = "veinte";
                }
                rtn += " " + str2 + "s";
                break;
            case 2:
                rtn = list2[primerDigito] + "nta";
                if (segundoDigito != 0)
                {
                    rtn += " y " + list1[segundoDigito];
                }
                rtn += " " + str2 + "s";
                break;
            case 3:
                rtn = "cien " + str2 + "s";
                break;
            case -1:
                rtn = "número invalido";
                break;
        }

        rtn = rtn.Replace("iun", "iún").Replace("idos", "idós").Replace("itres", "itrés").Replace("iseis", "iséis");

        return rtn;
    }

Могу поклясться, что ничего не изменил: C

Ответы [ 4 ]

4 голосов
/ 06 марта 2012

Измените public string convertir(string str) на public static string convertir(string str). Сделайте то же самое для функции españolizar.

1 голос
/ 06 марта 2012

Вы должны изменить свои два метода на static методы, поскольку вы не можете вызывать статический метод из нестатического метода. См. здесь для объяснения причин.

Чтобы это исправить, вы должны изменить следующее:

public string convertir(string str) 

К

public static string convertir(string str)

и изменить

public string españolizar(string str, string str2)

К

public static string españolizar(string str, string str2)
1 голос
/ 06 марта 2012

Вы получаете это сообщение, потому что вы вызываете нестатические методы из статического метода. Вам нужен экземпляр этого класса, чтобы вызывать нестатические методы или делать другие методы статичными.

0 голосов
/ 06 марта 2012

Метод преобразователя должен быть статическим (так же, как и основной).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...