请帮助我理解Console.WriteLine()如何工作

时间:2018-02-02 03:39:46

标签: c# loops while-loop console.writeline

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()也输出字符串“Retered 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帐户。

1 个答案:

答案 0 :(得分:2)

让我们来看看这个节目:

首先将变量numreverse初始化为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 * 100

        reverse = reverse * 10;

然后将num模数10添加到reverse。基本上,这将返回用户输入的任何数字的最后一位数字。因此,如果用户输入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设置为1reverse设置到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