2015-07-10 8 views
0

жаль, что это, вероятно, легко im новое для C#, и мне нужно ограничить ввод здесь на одну цифру.C# как ограничить числовой ввод на одну цифру

int value, value1, value2, value3, value4; 
int resultFinal, resultFirst, resultSecond, resultThird = 0; 

     Console.WriteLine("Enter five single digit numbers"); 

     value = Convert.ToInt16(Console.ReadLine()); 
     value1 = Convert.ToInt16(Console.ReadLine());    
     value2 = Convert.ToInt16(Console.ReadLine()); 
     value3 = Convert.ToInt16(Console.ReadLine()); 
     value4 = Convert.ToInt16(Console.ReadLine()); 


     resultFirst = value - value1; 
     resultSecond = value2 - value3;  
     resultThird = resultFirst + resultSecond; 
     resultFinal = resultThird + value4; 
     Console.WriteLine("Answer: {0}", resultFinal); 
     Console.WriteLine("Press any button to close"); 
     Console.ReadLine(); 
+1

Вы не можете ограничить возвращенную строку с помощью 'Console.ReadLine()'. Вы должны написать код, чтобы проверить его. – EZI

+0

Вход пользователя приходит как строка. Убедитесь, что длина их ввода равна 1, прежде чем хранить его в значении, значении1 и т. Д. Если это не 1, запросите их снова. –

ответ

1
Console.WriteLine("Enter five single digit numbers"); 
List<int> list = new List<int>(); 
do 
{ 
    var keyNumber = (int)Console.ReadKey(true).KeyChar; 
    if (keyNumber >= 48 && keyNumber <= 57) 
    { 
     Console.WriteLine("Your input number is:" + (char)keyNumber); 
     list.Add(keyNumber-48); 
    } 
    else 
    { 
     Console.WriteLine("Sorry, but please enter single digit numbers!"); 
    } 
} 
while (list.Count < 5); 
var resultFirst = list[0] - list[1]; 
var resultSecond = list[2] - list[3]; 
var resultThird = resultFirst + resultSecond; 
var resultFinal = resultThird + list[4]; 
Console.WriteLine("Answer: {0}", resultFinal); 
Console.WriteLine("Press any button to close"); 
Console.ReadLine(); 

Потому что вы просто хотите пользователю ввести singele значное число, я думаю, что Console.ReadKey(true) более лучше