2015-10-08 6 views
-1

Итак, я пытаюсь сделать эту простую программу, но с помощью оператора switch при запуске программы независимо от того, что я вставляю, я всегда получаю ответ по умолчанию. Как я могу сделать это там, где он выберет правильную инструкцию для числа, которое я ввел?Заявление о переключении номера

int number; 

Console.WriteLine("Enter a number between 0 and 50: "); 
number = int.Parse(Console.ReadLine()); 

switch (number) 
{ 
    case 1: 
     Console.WriteLine("Do you not know how to count? That's more than 50!"); 
     break; 
    case 2: 
     Console.WriteLine("Did I say you could choose a number below 0?");     
     break; 
    default: 
     Console.WriteLine("Good job smarty pants!"); 
     break; 
}   
Console.ReadLine(); 
+2

Вы должны попробовать отладки и увидеть путь, это на самом деле, принимая через код, обратите внимание на значение вашего 'number' и т.д. –

+3

Ваш код не имеет смысла , Вы говорите пользователю ввести число от 0 до 50, но вы оператор switch только сравниваете его с «1» и «2». –

+0

Вы не ясно заявили, что вы пытаетесь выполнить. Каков ожидаемый результат. Не заставляйте нас угадывать, основываясь на коде. – tdbeckett

ответ

6

Эх, просто if и else if:

if (number > 50) 
    Console.WriteLine("Do you not know how to count? That's more than 50!"); 
    else if (number < 0) 
    Console.WriteLine("Did I say you could choose a number below 0?");   
    else 
    Console.WriteLine("Good job smarty pants!"); 
+0

Согласитесь, инструкция 'switch' действительно не нужна для этого конкретного случая ... –

0

К сожалению, в этом случае вы пытаетесь вставить инструмент в использовании не был разработан. Случай действительно для отдельных случаев над пространством решений, а не с непрерывными. (Разница между ответом может быть -1 или 1, а ответ может быть < 0 и> 0). При этом я поддерживаю ответ пользователя Дмитрия Быченко, в котором говорится, что для выполнения этой задачи необходимо использовать if и else if. Я уверен, что вы могли бы разработать способ использования заявления switch, но это было бы похоже на использование задней стороны молотка для песка пола.

0

Что происходит в вашем коде, так это то, что прочитанный вами number вряд ли когда-либо будет 1 или 2, что будет сравниваться. То, что вы в настоящее время превращены в if...else (который легче обрисовать проблему с) будет:

if (number == 1) 
{ 
    Console.WriteLine("Do you not know how to count? That's more than 50!"); 
} 
else if (number == 2) 
{ 
    Console.WriteLine("Did I say you could choose a number below 0?"); 
} 
else 
{ 
    Console.WriteLine("Good job smarty pants!"); 
} 

Это должно помочь вам узнать, что ваш фактический вопрос, хотя я укажу его, что кажется, вы хотите чтобы ограничить пользователя значением от 0 до 50, но на самом деле вы проверяете только то, что введенный номер равен 1 или 2. Вы можете использовать оператор switch для этого типа проблем, но поскольку вам все равно необходимо убедиться число действительно, if...else немного более эффективно.

0

Вы также можете попробовать это:

int number = 12; 
Dictionary<Func<int, bool>, Action> dict = new Dictionary<Func<int, bool>, Action> 
      { 
       {x => x < 0,() => Console.WriteLine("Smaller than 0")}, 
       {x => x > 50,() => Console.WriteLine("Greater than 50")}, 
       {x => (x >= 0 && x <= 50),() => Console.WriteLine("Between 0 and 50")} 
      }; 

dict.First(kvp => kvp.Key(number)).Value(); 
Смежные вопросы