使用 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 == 2
和 x
不再小于或等于 sk1
。 (2不小于等于1)
让我们简化问题:
- 将任务拆分为:用户输入和table生成
- 选择可读的名称(
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++;
}
我正在尝试使用 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 == 2
和x
不再小于或等于sk1
。 (2不小于等于1)
让我们简化问题:
- 将任务拆分为:用户输入和table生成
- 选择可读的名称(
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++;
}