2012-03-06 102 views
-1

我真的不知道发生了什么。它第一次工作,然后当我尝试第二次失败时我不明白为什么第一个是正确的,但第二个失败

我已经检查拼写,什么也没找到。我很失落没有帮助

我指出了一个//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(); 
    } 
+1

你得到的错误信息是什么? – 2012-03-06 15:52:56

+0

这是怎么回事?!?你为什么要将相同的值转换成字符串和从字符串转换得这么多?它伤害了我的大脑! – musefan 2012-03-06 15:53:16

+0

@musefan Parse里面的toStrings是因为我得到一个错误,说'不能从字符转换为字符串'或类似的东西。 (也因为我是C新手新手) – mithril333221 2012-03-06 15:54:25

回答

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

你忘了开括号。

+0

哦,我的上帝,我以为我检查拼写 – mithril333221 2012-03-06 15:55:08

+0

+1好点:-) – 2012-03-06 15:57:20

+1

这probaly是插入评论的错字,否则不会编译。 – 2012-03-06 15:57:41

1

只要数为正数(没有前导减号),即可获得第一个数字:

strNumero[0] - '0' 

二位:

strNumero[1] - '0' 

你不需要调用任何花哨的解析函数来转换一个数字。

+0

有趣,我会尝试一下 – mithril333221 2012-03-06 15:58:24

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" 
相关问题