请帮助我了解 Console.WriteLine() 的工作原理
pls pls help me understand how Console.WriteLine() work
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Program
{
class Program
{
static void Main(string[] args)
{
int num, reverse = 0;
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
while (num != 0)
{
reverse = reverse * 10;
reverse = reverse + num % 10;
num = num / 10;
}
Console.WriteLine("Reverse of Entered Number is : "+reverse);
}
}
}
我可以理解在循环迭代过程中反向累积的先前值的概念,但为什么 WriteLine() 也输出字符串 "Reverse of Entered Number is: " 3 次?我知道如果我在循环体中输入它会发生一些事情,但反向输出仍然是:
blah blah blah: 3 // I understand this
" " : 32 // I thought this was going to output 2
" " : 321 // while this outputs 1
为什么“+ reverse”位是唯一执行的命令?而不是整行?
如果这是一个非常基本或愚蠢的问题,我很抱歉,我不得不为此创建一个 SO 帐户,这真的很困扰我。
让我们看一下程序:
开头的变量num
和reverse
初始化为0
;
int num, reverse = 0;
现在,将提示写入控制台,并使用 Console.ReadLine()
读取用户输入,将其作为整数解析为 num
:
的变量
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
对于此示例,我们假设用户输入了值 123
。
现在,只要 num
未设置为 0
,应用程序就会循环
while (num != 0)
{
在循环内部,reverse
的值乘以 10
。第一次通过时,这仍然是 0
,因为 0 * 10
是 0
。
reverse = reverse * 10;
随后将 num
模数 10
添加到 reverse
。基本上,这将 return 用户输入的任何数字的最后一位。因此,如果用户输入 123
,这将在第一次循环时设置为 3
。
reverse = reverse + num % 10;
现在,存储在 num
中的用户输入值除以 10
。因为它是一个 int
,小数值被截断了,所以 123
变成了 12
。
num = num / 10;
我们现在重新开始循环,但是 num
设置为 12
并且 reverse
设置为 3
。
在循环的顶部,reverse
再次乘以 10
,所以它的新值是 30
。
然后我们加上num
的最后一位,即2
,使得reverse
设置为32
。
接着删除 num
的最后一位,使其成为 1
。
我们再次循环,因为 num
仍然不等于 0
,这次 num
设置为 1
并且 reverse
设置到 32
.
在循环的顶部,reverse
再次乘以 10
,所以它的新值是 320
。
然后我们加上num
的最后一位,即1
,使得reverse
设置为321
。
接着删除 num
的最后一位,使其成为 0
。
这一次,num
等于0
,所以循环结束。
}
Console.WriteLine("Reverse of Entered Number is : "+reverse);
程序通过打印字符串 "Reverse of Entered Number is : "
后跟 reverse
.
的最终值来完成
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Program
{
class Program
{
static void Main(string[] args)
{
int num, reverse = 0;
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
while (num != 0)
{
reverse = reverse * 10;
reverse = reverse + num % 10;
num = num / 10;
}
Console.WriteLine("Reverse of Entered Number is : "+reverse);
}
}
}
我可以理解在循环迭代过程中反向累积的先前值的概念,但为什么 WriteLine() 也输出字符串 "Reverse of Entered Number is: " 3 次?我知道如果我在循环体中输入它会发生一些事情,但反向输出仍然是:
blah blah blah: 3 // I understand this
" " : 32 // I thought this was going to output 2
" " : 321 // while this outputs 1
为什么“+ reverse”位是唯一执行的命令?而不是整行?
如果这是一个非常基本或愚蠢的问题,我很抱歉,我不得不为此创建一个 SO 帐户,这真的很困扰我。
让我们看一下程序:
开头的变量num
和reverse
初始化为0
;
int num, reverse = 0;
现在,将提示写入控制台,并使用 Console.ReadLine()
读取用户输入,将其作为整数解析为 num
:
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
对于此示例,我们假设用户输入了值 123
。
现在,只要 num
未设置为 0
while (num != 0)
{
在循环内部,reverse
的值乘以 10
。第一次通过时,这仍然是 0
,因为 0 * 10
是 0
。
reverse = reverse * 10;
随后将 num
模数 10
添加到 reverse
。基本上,这将 return 用户输入的任何数字的最后一位。因此,如果用户输入 123
,这将在第一次循环时设置为 3
。
reverse = reverse + num % 10;
现在,存储在 num
中的用户输入值除以 10
。因为它是一个 int
,小数值被截断了,所以 123
变成了 12
。
num = num / 10;
我们现在重新开始循环,但是 num
设置为 12
并且 reverse
设置为 3
。
在循环的顶部,reverse
再次乘以 10
,所以它的新值是 30
。
然后我们加上num
的最后一位,即2
,使得reverse
设置为32
。
接着删除 num
的最后一位,使其成为 1
。
我们再次循环,因为 num
仍然不等于 0
,这次 num
设置为 1
并且 reverse
设置到 32
.
在循环的顶部,reverse
再次乘以 10
,所以它的新值是 320
。
然后我们加上num
的最后一位,即1
,使得reverse
设置为321
。
接着删除 num
的最后一位,使其成为 0
。
这一次,num
等于0
,所以循环结束。
}
Console.WriteLine("Reverse of Entered Number is : "+reverse);
程序通过打印字符串 "Reverse of Entered Number is : "
后跟 reverse
.