2015-07-01 3 views
0

Я хочу вернуться к началу условия «если», если выполнено условие «else». Я действительно новичок в программировании на C# и боюсь совсем немного, если честно. Извините, если это было задано раньше, я сделал, но ничего не нашел.Как мне вернуться в начало ветки if?


Вот мой (грязный) код:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Tinkering 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      { 
       Console.WriteLine("Let's go on an adventure shall we?\n\nLet's start with your name:"); 
       string userName = Console.ReadLine(); 

       Console.WriteLine("\nHi " + userName); 
       Console.WriteLine("\nIs that a girls' name?\n"); 
       Console.ReadLine(); 

       Console.WriteLine("\nI see\n"); 
       Console.WriteLine("Well anyway, let's get started shall we?\n"); 
       Console.WriteLine("Would you care to go Left or Right " + userName); 

       while (userInput) 
       { 

        string userInput = Console.ReadLine(); 
        if (userInput == "left") 
        { 
         Console.WriteLine("Left it is!\nYou see a long dark corridor. There is a sudden empty feeling in your stomach, kind of like that weird feeling where it feels empty but you know you could shit..."); 
         Console.ReadLine(); 
        } 

        else if (userInput == "right") 
        { 
         Console.WriteLine("Ok let's head right\n"); 
         Console.WriteLine("\nIt looks as though we have a locked door here..."); 
         Console.WriteLine("Unfortunately" + userName); 
         Console.WriteLine("that is the end of this shitty little game (I couldn't be bothered writing anymore code for it lol"); 
         Console.ReadLine(); 
        } 

        else 
        { 
         Console.WriteLine("Just type 'left' or 'right' please"); 
         Console.ReadLine(); 
        } 
       } 
+0

Как правильно использовать строку в качестве условия для 'while'? Я угадываю синтаксическую ошибку? –

+0

Не уверен, что я понимаю вопрос. вы имеете его в цикле while (хотя и очень странный), поэтому он будет повторяться, когда он нажимает на закрытие '}'. Возможно, вам просто нужно исправить свое состояние (которое даже не похоже на компиляцию)? – BradleyDotNET

+0

Да, извините, я кое-что узнал в Интернете и решил немного похудеть/пообщаться (как сказал друг, это лучшее, что нужно для обучения программированию ...), но, очевидно, мне нужно вернуться к самому началу ... – Kenny

ответ

1

Вы используете console.ReadLine() в begginning в то время как петли. Поэтому удалите их с конца if, иначе, если блок и блок блокируются. Тогда ваш код должен автоматически вернуться к, если заявление

while (userInput) 
      { 
       string userInput = Console.ReadLine(); 
       if (userInput == "left") 
       { 
        Console.WriteLine("Left it is!\nYou see a long dark corridor. There is a sudden empty feeling in your stomach, kind of like that weird feeling where it feels empty but you know you could shit..."); 
       } 

       else if (userInput == "right") 
       { 
        Console.WriteLine("Ok let's head right\n"); 
        Console.WriteLine("\nIt looks as though we have a locked door here..."); 
        Console.WriteLine("Unfortunately" + userName); 
        Console.WriteLine("that is the end of this shitty little game (I couldn't be bothered writing anymore code for it lol"); 
       } 

       else 
       { 
        Console.WriteLine("Just type 'left' or 'right' please"); 
       } 
+0

Блестяще большое спасибо! – Kenny

0

Если предположить, что ваше while условия работает правильно, вы бы добавить break; в конце ваших "left" и "right" случаев. Это вырвет вас из цикла и продолжит.

Простой сценарий будет что-то вроде этого:

string userInput; 
while (true){ 
    userInput = Console.ReadLine(); 
    if (userInput == "left"){ 
     //do stuff 
     break; 
    } else if (userInput == "right"){ 
     //do stuff 
     break; 
    } else { 
     //do stuff 
    } 
} 
+0

Это фантастическое сообщество, спасибо вам большое! – Kenny

0

Лучшие практики также: а) использовать Swtich против Если заявление и б) избегать литералов. Комбинированные комментарии - редкая «лучшая практика», но я лично обнаружил, что они значительно повышают читаемость при использовании и наоборот (особенно в устаревшем коде с «худшей практикой» «длинными» блоками).

Ex.

 const string Direction_Left = "left"; 
     const string Direction_Right = "right"; 

     string userInput; 

     while (true) 
     { 

      userInput = Console.ReadLine(); 

      switch (userInput) 
      { 

       case Direction_Left: 
       { 
        //do stuff 
        break; 
       } // case Direction_Left: 

       case Direction_Right: 
       { 
        //do stuff 
        break; 
       } // case Direction_Right: 

       default: 
       { 
        //do stuff 
        continue; 
       } // default: 

      } // switch (userInput) 

     } // while (true)