2015-09-19 1 views
3

Я пытаюсь спросить, является ли ввод законной числовой переменной. Я пробовал это так (там, где отображается неверный вывод, как показано), с == и else (где он говорит, что еще не так) и не знаю, почему он не работает. Любые предложения или другие способы попыток сделать это будут высоко оценены.if, not equals and or help (не уверен, что)

static void start() 
{ 
    // start of broken code 

    Console.WriteLine("Please select a variable type"); 
    string selection = Console.ReadLine(); 
    if ((selection != "short") || (selection != "ushort") || (selection != "int") || (selection != "uint") || (selection != "byte") || (selection != "long") || (selection != "ulong")); 
    { 
     Console.WriteLine("That is not a correct form of variable"); 
     Console.WriteLine("Let's try this again"); 
     start(); 
    } 

    // end of broken code 

    Console.WriteLine("You selected ", selection); 
    Console.WriteLine("Is this correct? (Y/N)"); 
    string sure = Console.ReadLine(); 
    if (sure == "Y") 
    { 
     Console.WriteLine("Let's begin!"); 
     calculator(); 
    } 
    else 
    { 
     Console.WriteLine("Let's try this again"); 
     start(); 
    } 
} 

Выход: Пожалуйста, выберите тип переменной INT // то, что я вошел Это не правильная форма переменной Lets попробовать это снова Пожалуйста, выберите тип переменной

ответ

3

Используйте '& &' вместо '||' оценка возвращает true, если какое-либо из этих условий возвращает true, что гарантирует его сбой, поскольку это может быть только один вариант.

6

Есть 2 вопросы с этой строкой:

if ((selection != "short") || (selection != "ushort") || (selection != "int") || (selection != "uint") || (selection != "byte") || (selection != "long") || (selection != "ulong")); 

|| или & &

Эта линия, на простом английском языке, говорит, если выбор пользователя не «короткий», или это не «USHORT» и т.д. Независимо от того, что выбор не является оно не может быть оба из них - так что вы всегда получите сообщение «Это не правильная форма переменной».

Вместо этого вы хотите код, который проверяет , если выбор пользователя не «короткий», и это не «USHORT» и т.д. Так, если выбор соответствует любому из разрешенных возможностей, вы будете продолжать на этапе подтверждения.

; после условия if

В конце строки есть ;, которого не должно быть. Это приводит к потере пустого блока для тела условия, и код, который должен был находиться в теле условия, всегда будет выполняться независимо от результата условия. Так что ваш код

if ((selection != "short") && (selection != "ushort") ...); 
{ 
    Console.WriteLine("That is not a correct form of variable"); 
} 

эквивалентно

if ((selection != "short") && (selection != "ushort") ...) 
{} 

Console.WriteLine("That is not a correct form of variable"); 

Удалить точку с запятой, и он будет вести себя, как ожидалось.

if ((selection != "short") && (selection != "ushort") ...) 
{ 
    Console.WriteLine("That is not a correct form of variable"); 
} 
+1

Я сделал так, как вам было предложено, однако консоль все еще возвращает, что 'int' не является допустимой переменной. Console.WriteLine («Выберите тип переменной»); выбор строки = Console.ReadLine(); if ((selection! = "Short") && (selection! = "Ushort") && (selection! = "Int") && (selection! = "Uint") && (selection! = "Byte") && (selection ! = "long") && (selection! = "ulong")); { Console.WriteLine («Это не правильная форма переменной»); Console.WriteLine («Давайте попробуем это снова»); start(); } –

+0

Нашел вторую проблему с этой линией, ответьте обновленный – sheilak

+1

Да, что работает, thankyou –