【问题标题】:pls pls help me understand how Console.WriteLine() work请帮助我了解 Console.WriteLine() 的工作原理
【发布时间】:2018-02-02 03:39:45
【问题描述】:
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() 不输出字符串“输入数字的反向为:” 3 次?我知道如果我在循环体中输入它会发生这种情况,但反向输出仍然是:

blah blah blah: 3 // I understand this
"          "  : 32 // I thought this was going to output 2
"          "  : 321 // while this outputs 1 

为什么“+ reverse”位是唯一执行的命令?而不是整行?

很抱歉,如果这是一个非常基本或愚蠢的问题,我不得不为其创建一个 SO 帐户。

【问题讨论】:

  • 你能分享一个完整的工作代码,然后你期望的确切的o/p和你得到的确切的o/p吗?
  • 已编辑。我期望 1 作为输出,而我得到 321(实际上是正确的)。我想弄清楚它是怎么变成这样的。

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


【解决方案1】:

让我们来看看这个程序:

它以变量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 设置为 12reverse 设置为 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 的最终值来完成。

【讨论】:

  • 谢谢!这是一个惊人的剖析,我在执行加法和模数方面确实是错误的。非常感谢!你的崩溃帮助我摆脱了愚蠢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2016-08-28
  • 2018-10-06
相关资源
最近更新 更多