2015-07-26 1 views
-4

Я делаю консольную программу, и я пытаюсь читать значения из пользовательского ввода. Если пользователь вводит значение, подобное 1, оно заканчивается как 49. Я считаю, что код ввода: int classicPlant = Console.Read() - проблема, но я не знаю, почему, или если она даже есть.
Я убедился, что это не вина в действиях, которые я выполняю на нем, потому что я проверил его в отдельной программе. Любая идея, как эти цифры могут расти в стоимости?Почему пользовательские вмененные значения растут в значительной степени в стоимости после ввода через Console.Read();

+0

Извините за фрагмент, который не попал в формат кода. Я попытаюсь отредактировать это. –

+4

Ваша «целая программа» не будет компилироваться, но ваш вопрос в значительной степени непонятен, поскольку в настоящее время он написан - попытайтесь сузить * просто * то, что необходимо для воспроизведения вашей проблемы в полном примере, который * компилирует и запускает *. Вероятно, вы найдете свою проблему в процессе ее выполнения, но если вы этого не сделаете, обновите свой вопрос с помощью * этого * кода. http://sscce.org/ –

+0

Во-первых, строка ** double classicLPD = classicTrees * = 0.5; ** устанавливает classicTrees в 3, поэтому вы получаете 3 вместо 6. – Angzuril

ответ

6

int classicPlant = Console.Read() является виновником.

Console.Read возвращает значение символа элемента ввода. В ASCII, '1' = 49, и '3' = 51.

'1' - 1 == 48 '3' + 1 == 52

Таким образом, исправить Read использовать Integer.Parse() или проверить диапазон и вычитать 48 или что-то подобное

+1

И в случае, если неясно, 'classicLimes' равно 5 и' 5 - '1' == -44' – Eris