2016-10-14 2 views
0

Пользователь будет играть в соответствующую игру. Если элемент соответствует номеру, он скажет, что он соответствует другому, он не будет соответствовать. Все совпадающее число передается по массиву matchedNum. Начальное значение массива matchedNum равно нулю. Как остановить цикл, когда в массиве больше нет нулей?Как разбить цикл, если в массиве нет нулевого значения? (C#)

class Program 
{ 
    public static int[,] memoryNum = { { 2, 1, 7, 3 }, { 5, 4, 9, 6 }, { 3, 7, 2, 4 }, { 6, 5, 1, 9 } }; 
    public static int[,] matchedNum = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; 
    public static int row1 = 0; 
    public static int col1 = 0; 
    public static int row2 = 0; 
    public static int col2 = 0; 
    public Boolean matches = true; 
    public static int tries = 3; 
    static void Main(string[] args) 
    { 
     for (int i = 0; i < 4; i++) 
     { 
      for (int j = 0; j < 4; j++) 
      { 
       Console.Write("* "); 
       if (j == 3) 
       { 
        Console.WriteLine(""); 
       } 
      } 
     } 

     while (tries != 0) 
     { 
      Console.Write("\nEnter row(First Num): "); 
      row1 = Convert.ToInt32(Console.ReadLine()); 
      checker(row1); 
      Console.Write("Enter col(First Num): "); 
      col1 = Convert.ToInt32(Console.ReadLine()); 
      checker(col1); 
      Console.Write("Enter row(Second Num): "); 
      row2 = Convert.ToInt32(Console.ReadLine()); 
      checker(row2); 
      Console.Write("Enter col(Second Num): "); 
      col2 = Convert.ToInt32(Console.ReadLine()); 
      checker(col2); 

      if (memoryNum[row1 - 1, col1 - 1] == memoryNum[row2 - 1, col2 - 1]) 
      { 
       matchedNum[row1 - 1, col1 - 1] = memoryNum[row1 - 1, col1 - 1]; 
       matchedNum[row2 - 1, col2 - 1] = memoryNum[row2 - 1, col2 - 1]; 
       displayMatched(matchedNum); 
       Console.WriteLine("Matched!"); 
      } 
      else 
      { 
       displayNotMatched(memoryNum); 
       tries--; 
       Console.WriteLine("Did not match, Please try again!"); 
      } 

      //if there's no zero in the array, break; 
     } 


     if(tries == 0) 
      Console.WriteLine("Number of tries exceeded! Play Again?"); 
     Console.ReadKey(); 
    } 
} 
+0

Используйте [Break;] (https://msdn.microsoft.com/en-us/library/adbctzc4.aspx), он завершает ближайший замкнутый цикл или оператор switch, в котором он появляется. Элемент управления передается в оператор, который следует за завершающим оператором, если таковой имеется. –

+0

@MohitShrivastava Я знаю, что мне нужно использовать break, но я не знаю, как это сделать, используя for loop. Если я попробую 'if (matchedNum [i] [j]! = 0) break;', после этого он будет игнорировать остальные числа. Я думаю, что если после этого числа будет ноль? – Temmie

+0

Вы запрашиваете условие 'if' для вашего' break'? Потому что из прокомментированной части, я полагаю, вы уже знаете, что вам нужно как-то «перебить» петлю. – uTeisT

ответ

2

использовать счетчик, когда ему больше нет нулей.

+0

спасибо! Только то, что мне нужно! Я забыл, что счетчик существует haha ​​ – Temmie

+0

, хотя счетчик должен быть равен 8, так как он увеличивает каждое совпадающее число, учитывая, что есть только 8 совпадающих номеров, но спасибо! – Temmie

0

Оператор break завершает ближайший закрытый цикл или оператор switch, в котором он отображается. Элемент управления передается в оператор, который следует за завершающим оператором. More

Смежные вопросы