我不明白为什么第一个是正确的,但第二个失败了

时间:2012-03-06 15:48:26

标签: c# compiler-errors

我真的不知道发生了什么。它第一次工作,然后当我第二次尝试失败时

我已经检查过拼写但没有找到任何内容。我没有帮助就迷失了

我用错误行//comment指出:)

为了防止我的代码不明白,我希望使用[1]选择器获取第二个数字

我的代码是:

    static void Main(string[] args)
    {
        españolizar("55","44");
    }
    static void 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)
            //this is the one that fails
            segundoDigito = int.Parse(Convert.ToString(strNumero[1]));
            //\-------------------------/
        }

        Console.WriteLine(strNumero);
        Console.ReadLine();
    }

3 个答案:

答案 0 :(得分:4)

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

你忘了打开牙套。

答案 1 :(得分:1)

只要数字是正数(没有前导减号),您就可以得到第一个数字:

strNumero[0] - '0'

第二位:

strNumero[1] - '0'

您无需调用任何花哨的解析函数来转换单个数字。

答案 2 :(得分:0)

实际上,如果您还需要char,则不需要string并来回投射。然后,您还可以使用String.Substringint.TryParse

String str = "56";
int firstDigit = 0;
int secondDigit = 0;
int.TryParse(str.Substring(0, 1), out firstDigit);
int.TryParse(str.Substring(1, 1), out secondDigit);
Console.WriteLine(String.Format("first digit:{0} second digit:{1}",firstDigit,secondDigit));
//result=> "first digit:5 second digit:6"