C# - 用除法和余数分隔整数/字符串

时间:2010-08-31 23:07:40

标签: c#

我有一个功课,我无法弄清楚该怎么做。我不确定老师是否写错了(他是一个坏人)或者是否有办法完成任务。

我在Visual C#2010 Express - 控制台应用程序

中工作

我的任务是:

从键盘读取一个四位整数,例如5893,并通过每个标签显示彼此分开的数字。使用整数除法和模数运算符%来挑选每个数字。如果用户输入4567,则输出如下:

4567

4 5 6 7

当然,我知道如何使用\t分隔数字以及读取输入并将其显示给用户。但我怎么能用分裂和剩余的算子“挑选”每个数字呢?也许他意味着别的东西,但不确定。

另一个问题......

如何确保用户输入的内容是数字而不是字母? 我是否必须使用Char.IsLetter,因为我无法弄清楚如何在解析后的字符串上使用它。

示例:

        string number1;
        int x;
        Console.Write("Please enter a number to calculate: ");
        number1 = Console.ReadLine();
        x = Int32.Parse(number1);

我应该使用什么方法以及将它放在哪里?因为现在我只收到错误,如果我尝试输入e字母,应用程序就会关闭。

5 个答案:

答案 0 :(得分:5)

第一个问题更多是关于数学而不是编程。你知道除法和模数运算符的作用。想想你如何使用它们来获得最后一个(最不重要的)数字。完成后,您可以为第二位数(十位)应用类似的技术,然后对数百和数千应用相同的技术,依此类推。

您已找到Char.IsLetter,但也有Char.IsDigit,可以更直接地执行您想要的操作。你可以检查一个字符,你拥有的是一串字符。看看foreach循环。

答案 1 :(得分:1)

转换String时,

System.Int32.TryParse()可能是更好的选择。

答案 2 :(得分:0)

是的,你的任务是有道理的。假设您有一个整数x = 4567.要选择位置A的数字,您将使用:

result = (int)((x / (A * 10)) % 10);

这个的第一部分(x /(A * 10))“向右移动”x。因此,A = 1的值将4567除以10,结果为456.7。然后使用模运算符“%”来选择该数字的单位部分。最后转换为int以删除小数部分。

答案 3 :(得分:0)

好的,我不会给出完整的解决方案(毕竟,这是作业;))。

此代码将检查输入中是否有四个字符:

        string input;
        do
        {
            input = Console.ReadLine();
            if (input.Length != 4)
                Console.WriteLine("You have to enter FOUR digits");
        } while (input.Length != 4);

这可能是检查数字的一种方法:

        bool isOk = true;
        foreach (char c in input.ToArray())
        {
            if (!Char.IsDigit(c))
            {
                Console.WriteLine("You have to enter four DIGITS");
                isOk = false;
                break;
            }
        }

这种方法不涉及数学,但你也可以这样做:

int num = int.Parse(input);
int tensOfThousands = num / 10000;
int thousands = (num - tensOfThousands) / 1000;
int lastDigit = num % 10;
//the rest of the digits are up to you ;)

答案 4 :(得分:0)

对于C#的新手,解决方案可以更简单。

        // Variables
        int number = 1234;
        int remainder;
        string s = "";

        while (number > 0) {
            remainder = number % 10;
            s = remainder + "\n" + s;
            number /= 10;
        }
        Console.Write (s);