Я не могу получить числа для вывода так, как я хочу в C # - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу ввести число от 1 до 100, и консоль должна записать все числа от введенного номера до 101. Если я введу число от 1 до 100, программа должна закрыться. У меня возникают проблемы с закрытием программы при вводе 0 или 101. Она либо зависает, либо включает 0, если я ввожу 0, и просто записывает 101, если вводится 101. Когда числа выводятся, между ними нет пробела.

static void Main(string[] args)
{
    Console.WriteLine("Input a number between 1-100");
    Console.Write("");
    string number = Console.ReadLine();
    int x = Convert.ToInt32(number);
    do
    {
        if (x > 0 || x < 101) //I tried switching out || for &&
        {
            Console.Write(x++);
        }
    } while (x != 102);
}

Ответы [ 5 ]

0 голосов
/ 04 ноября 2019

Я думаю, что лучше использовать цикл for:

Console.WriteLine("Input a number between 1-100");
Console.Write("");
string number = Console.ReadLine();
int x = Convert.ToInt32(number);
if( x > 0 && x < 101 )
{
   for( int i = x; i <=101; i++ )
    {
        Console.Write(i);
    }
}

Или, если вы хотите использовать цикл do-while, измените код следующим образом:

static void Main( string[ ] args )
{
    Console.WriteLine("Input a number between 1-100");
    Console.Write("");
    string number = Console.ReadLine();
    int x = Convert.ToInt32(number);
    do
    {
        if (x > 0 && x <= 101) 
        {
            Console.WriteLine(x++);
        }
        else
        {
            Environment.Exit( 0 ); // when insert 0 or 101
        }
    } while (x < 102);
    Console.ReadKey( ); // when write all numbers, wait for a key to close program
}
0 голосов
/ 04 ноября 2019

Этот код также обрабатывается, если пользователь пытается ввести не цифру.

  int x;
  // read input until user inputs a digit instead of string or etc.
  do
  {
    Console.WriteLine("Input a number between 1-100");
  }
  while (!Int32.TryParse(Console.ReadLine(), out x));

  // exit from program if x isn't between 1 and 100
  if (x < 1 || x > 100)
    return;    

  // else count from given number to 101
  for(int i = x; i < 101; ++i)
  {
    Console.WriteLine(i);
  }
0 голосов
/ 04 ноября 2019

Одним из способов является использование текущего значения x в качестве условия цикла

Console.WriteLine("Input a number between 1-100");
int x = Convert.ToInt32(Console.ReadLine());
while (x > 0 && x < 101)
{
    Console.WriteLine(x++);
}
0 голосов
/ 04 ноября 2019
if (x > 0 || x < 101)

это верно почти для каждого числа. Вы хотите изменить ||на &&

Console.Write(x++);

Измените это на WriteLine или добавьте дополнительный пробел в конце x ++, чтобы получить пространство между ними.

while (x != 102);

это проверяет только одно значение. если вы наберете, например, 103, вы получите бесконечный цикл. попробуйте <102 </p>

0 голосов
/ 04 ноября 2019

Вы можете сделать это, используя цикл for с предопределенным значением.

for (int x = Convert.ToInt32(number); x < 102; x++)
{
    Console.WriteLine(x);
}
...