2015-09-21 3 views
-2

Я хочу, чтобы иметь возможность читать значение от оператора M/F для мужчин или женщин и возвращать отдельные блоки текста для каждой соответствующей записи.Преобразование int в Char C#?

Char gender; 
int TempValue; 
Console.WriteLine("Please enter your name"); 
Console.CursorVisible=true; 
String name = Console.ReadLine(); 
Console.WriteLine(" Greetings, faire travler {0} you are about to depart on a rather exciting adventure, but first are you male or female?", name); 
Console.WriteLine("(M/F)"); 

TempValue = Console.Read(); 
Console.WriteLine("{0}", TempValue); 
gender = Char.Parse(TempValue); 

Теперь я получаю сообщение об ошибке говоря, что я «не может конвертировать из„INT“в„строка“, которую я действительно не понимаю. Becuase им пытаются разобрать его в полукокса не строку.

+2

не должен 't это пол = Char.Parse (TempValue); ? или вы можете просто сделать gender = (char) TempValue; –

+1

такая же ошибка в любом случае –

+0

Вы читаете (TempValue = Console.Read();) и указываете (M/F), так как это помещает int в TempValue? Который вы затем пытаетесь преобразовать в символ. –

ответ

1

Console.Read() возвращает значение ASCII символа введенного. (В случае «М» это 77) char.Parse(TempValue) ожидает, что TempValue будет string и что он содержит ровно один символ. Итак, это то, что вы использовали бы для преобразования строки «M» в символ «M». Но у вас нет строки «M»; у вас есть INT 77.
В этом случае, вы можете просто бросить его:

char gender = (char)TempValue; 

В качестве альтернативы, вы можете использовать Console.ReadLine(), который возвращает string, а затем взять первый символ:

string input = Console.ReadLine(); 
char gender = input[0]; 
+0

Мне это нравится лучше –

1

Char.Parse принимает string, как это параметр, но TempValue объявлен как int Вы можете ToStringTempValue:.

gender = Char.Parse(TempValue.ToString()); 

или использовать Convert.ToChar(), который принимает object:

gender = Convert.ToChar(TempValue); 
+0

Хорошо спасибо, что выяснили мою проблему. но форматирование является довольно неуклюжим. есть ли более простой способ сделать это? –

+1

Что значит неуклюжий? Вы также можете использовать его, например 'gender = (char) TempValue;' –

Смежные вопросы