使用 while 循环 C# 乘以 table

Multiply table using while loop C#

我正在尝试使用 while 循环创建乘法 table,但我不明白为什么 While(x<=sk1) 循环只执行一次 I <=sk1 循环。

int x = 1;

Console.Write("Enter number under 20: ");
string input1 = Console.ReadLine();
int sk1 = int.Parse(input1);

while (sk1 > 20)
{
    Console.Write("Enter number once again: ");
    input1 = Console.ReadLine();
    sk1 = int.Parse(input1);
}

while (x <= sk1)
{
    int i = 1;
    while (i <= sk1)
    {
        Console.Write($" {i*x} ");
        i++;
    }
    Console.WriteLine();
    x++;
}

看看循环。

int x = 1;

while (x <= sk1)
{
    int i = 1;
    while (i <= sk1)
    {
        //Do some stuff here
        i++;
    }
    Console.WriteLine();
    x++;
}

在你的例子中,它循环了一次,因为你输入了 1 作为用户输入。 sk1 = 1

  • 在你的代码上打一个断点,你会第二次看到 i == 2。因此,i 不再小于或等于 sk1。 (2不小于等于1)
  • 现在 x == 2x 不再小于或等于 sk1。 (2不小于等于1)

让我们简化问题:

  1. 将任务拆分为:用户输入和table生成
  2. 选择可读的名称(sk1 是什么意思?)

代码:

private static int ReadPositiveInteger(int maxValue) {
  while (true) {
    Console.Write($"Enter positive number under {maxValue}: "); 

    if (!int.Parse(Console.ReadLine(), out int result))
      Console.WriteLine("Sorry, not a integer value");
    else if (result <= 0)
      Console.WriteLine("Sorry, not a positive integer value");
    else if (result > maxValue) 
      Console.WriteLine($"Sorry, the value must be not greater than {maxValue}");
    else
      return result; 
    }
  }

有了 size 让我们构建 tables:

private static void PrintMultiplyTable(int size) {
  int row = 1; 

  while (row <= size) {
    int column = 1;

    while (column <= size) {
      Console.WriteLine($" {row * column,3}"); // ,3 - formatting

      column += 1; 
    }

    row += 1;    
  } 
}

现在,为了绘制 table,您可以将(Main 方法中的某处)

PrintMultiplyTable(ReadPositiveInteger(20)); 

我最终想出了这个解决方案,工作正常。

int x = 1;        
Console.Write("Enter number under 20: ");
string input1 = Console.ReadLine();
int num1 = int.Parse(input1);

while (num1 > 20)
{
    Console.Write("Enter number once again: ");
    input1 = Console.ReadLine();
    num1 = int.Parse(input1);
}

while (x <= num1)
{
    int i = 1;
    while (i <= num1)
    {
        Console.Write($" {i*x} ");
        i++;
    }
    Console.WriteLine();
    x++;
}