繁体   English   中英

总和,数字乘积不等于0与数字的数量…在C#中为SWITCH

[英]Sum,product of digits not equal to 0 and number of digits…WITH SWITCH in C#

我是编程的新手,尤其是C#,但是我今年正在研究它,我意识到我确实喜欢它并且真的很想理解它。 但是,我们的老师让我们自己学习。 好的,没问题,互联网是如此的令人惊奇。

因此,我将本练习作为家庭作业:

====计算总和,不等于0的位数与整数位数的乘积。====

问题是,我只知道如何同时使用if和if并使其完美运行,但她希望我们也可以使用SWITCH进行操作,这就是我迷失的地方,因为我只是不知道该如何构建案件(当case为0时很好,但是当digit或n!=等于0时我怎么写大小写?)

我真的需要一些帮助,非常感谢您给予的任何帮助! 另外,您能提供一个解释吗? 非常感谢! :D

int n, s = 0, p = 1, d = 0, digit;
Console.Write("Number n : ");
n = Convert.ToInt32(Console.ReadLine());

if (n == 0)
    p = 0;
do
{
    digit = n % 10;
    s += digit;
    if (digit != 0)
        p *= digit;
    d++;
    n /= 10;
} while (n != 0);
Console.WriteLine("The sum of the digits is: {0} ", s);
Console.WriteLine("The product of the digits not equal to 0 is : {0} ", p);
Console.WriteLine("The number of the digits is: {0}", d);
Console.ReadKey();

您不能在开关/盒中打印所有可能的组合,但是至少可以在“ 0”和“ not 0”之间进行区分:

switch(n)
{
     case 0: // n == 0
         p = 0;
         break;
     default: // this runs in any case but zero
         do
         {
             digit = n % 10;
             s += digit;
             if (digit != 0)
                 p *= digit;
             d++;
             n /= 10;
         } while (n != 0);
         break;
}

也许是这样,您的老师想告诉您的是:开关的default情况,基本上意味着“其他所有东西”。

关于您对n的分析...当然可以,您可以将其解析为一个int以及该除数/模数的东西,但是由于您是编程的新手,也许您不知道您可以按字符读取字符串-通过索引的char:

string input = Console.ReadLine();
foreach (char c in input)
{
    int digit = Convert.ToInt32(c);
    s += digit;
    p *= digit;
}

该foreach将遍历字符串char-by-char并将下一个字符存储在c 到目前为止,此代码比div / mod版本更易于阅读。 简洁的代码有助于理解。

像这样更改它时,您的开关将如下所示:

switch (input.Length)
{
    case 0:
        p = 0;
        break;
    default:
        // the foreach loop from above
        break;
}

希望这会有所帮助,欢呼,格里斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM