2013-08-23 2 views
-3

Невозможно преобразовать строку в сообщение об ошибке char. Я пытаюсь написать программу, которая, например, позволит пользователю вводить 1800HIETHC, и она вернет им все цифры. Я уже застрял .... Любая помощь или совет, что делать?Преобразование строки в сообщение об ошибке char

static void Main(string[] args) 
    { 
     char number = ' '; 
     int numb = 0; 

     Console.WriteLine("Please enter the telephone number..."); 
     number = Console.ReadLine(); 

     while (number <= 10) 
     { 

      if (number == 'A') 
      { 
       numb = 2; 
      } 
     } 

     Console.WriteLine(numb); 
    } 
} 

}

+0

Другие чем обработка «A», то, что вы пробовали? Каковы ваши результаты? Любые ошибки? Информацию, которую вы предоставляете и демонстрируете свою попытку решить свою проблему, тем более вероятно, что вы получите ответ. – davids

ответ

1

Console.ReadLine дает вам string

string является, среди прочего, коллекцию char s

попробовать этот

string number = ""; 
int numb = 0; 

Console.WriteLine("Please enter the telephone number..."); 
number = Console.ReadLine(); 

for(int i=0; i<number.Count; i++) 
{ 
    if (number[i] == 'A') 
    { 
     //... 
    } 
} 
1

Console.ReadLine() вернуть s строка не символ. Поэтому вы не можете присвоить его переменному номеру. После того, как вы назначили его в строку, которую вы можете получить символы из строки, выполнив myString[0]

1

Если я вас правильно понял,

string number = "1800HIETHC"; //Console.ReadLine() reads whole line, not a single char. 

int[] nums = Digits(number); 




static int[] Digits(string number) 
{ 
    return number.Where(char.IsLetterOrDigit).Select(ToNum).ToArray(); 
} 

static int ToNum(char c) 
{ 
    int[] nums = { 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9 }; 

    if (char.IsDigit(c)) return c - '0'; 

    c = char.ToUpper(c); 
    return nums[c - 'A']; 
}