Проблема с вечным циклом в С#

242
29 октября 2017, 17:09

В коде ниже бесконечно выполняется (повторяется) одно действие. В чем может быть проблема?

using System;
namespace Lab1
{
  public class Train
  {
    public string city;
    public string number;
    public string time;
    public Train(string x, string y, string z)
    {
        city = x;
        number = y;
        time = z;
    }
  }
  public class Progrmm
  {
    public static void Main(string[] args)
    {
        Train train1 = new Train("0", "0", "0");
        Train train2 = new Train("0", "0", "0");
        bool num2= true;
        int num;
        Console.WriteLine("Select step " + " " +
                               " " + "1-Data entry" + " " +
                               "2-Data output" + " " +
                               "3-Treatment" + " " +
                               "4-Exit");
        num = Convert.ToInt32(Console.ReadLine());
        while (num2==true)
        { 
            switch (num)
            {
                case 1:
                    Console.WriteLine("Enter train1 city");
                    train1.city = (Console.ReadLine());
                    Console.WriteLine("Enter number");
                    train1.number = (Console.ReadLine());
                    Console.WriteLine("Enter time");
                    train1.time = (Console.ReadLine());
                    Console.WriteLine("Enter train2 city");
                    train2.city = (Console.ReadLine());
                    Console.WriteLine("Enter number");
                    train2.number = (Console.ReadLine());
                    Console.WriteLine("Enter time");
                    train2.time = (Console.ReadLine());
                    Console.ReadLine();
                    break;
                case 2:
                    Console.WriteLine($"Train 1 {train1.city}  {train1.number} {train1.time}");
                    Console.WriteLine($"Train 2 {train2.city}  {train2.number} {train2.time}");
                    Console.ReadLine();
                    break;
                case 3:
                    if (train1.city == train2.city) Console.WriteLine("Пункты совпадают");
                    else Console.WriteLine(" Пункты не совпадают");
                    Console.ReadLine();
                    break;
                case 4:
                    num2 = false;
                    break;
                default:
                    Console.WriteLine("Error");
                    Console.ReadLine();
                    break;
            }
          }
    }
  }
}
Answer 1

Не очень понятно, чего вы пытаетесь добиться, но возможно вам нужно вводить число до тех пор, пока не будет введено '4'

Для этого исправьте

num = Convert.ToInt32(Console.ReadLine());
while (num2==true)
{

На

while (num2==true)
{
    num = Convert.ToInt32(Console.ReadLine());

Также while (num2==true) можно исправить на более лаконичное while (num2)

READ ALSO
Асинхронная загрузка в Unity

Асинхронная загрузка в Unity

Можно ли подгрузить следующую сцену в текущей, но не запускать её? К Примеру, метод SceneManagerLoadSceneAsync() запускает сцену сразу после загрузки

351
c# как распознать текущую ссылку?

c# как распознать текущую ссылку?

как распознать текущую ссылку, это просто ссылка или на файл?Ps

253
Вставка JSON в MySQL (C#)

Вставка JSON в MySQL (C#)

ЗдравствуйтеНе получается вставить JSON в MySQL в C# (MySql

300
Как сохранить [,] массив в файл?

Как сохранить [,] массив в файл?

Как сохранить двумерный массив (объявляю как [,]) вtxt файл как он есть? В матрице или бинарном видe — точно не знаю пока, как правильно

351