.net 如何使用除法和模运算符将一串数字分隔为单个数字?

ktca8awb  于 2023-01-18  发布在  .NET
关注(0)|答案(5)|浏览(159)

假设有人在控制台中输入了一个四位数1234,那么如何仅使用除法和模运算符将这个数分解为1 2 3 4呢?

public static void MathProblem()
        {
            Console.WriteLine("Type a four digit number:");
            //Ex input: 1234

            string inputNumber = Console.ReadLine();

            // I'm guessing you first need to parse the 
            // string as an int in some way?
            // And then assign it to some variable

            // Now, for seperating the digits to be: 1 2 3 4, 
            // you can (and must) use both division (/), and the remainder (%).
            // The first one will be simple, just dividing value with 1000, but
            // how about the others? (Remember, % also need to be used at least
            // once)

                Console.Write("{0},{1},{2},{3}", value/1000, ?, ?, ?;
            }

对于任何给定的四位数输入,有什么指导方针可以实现这一点吗?

gupuwyp2

gupuwyp21#

由于这看起来像是一个家庭作业问题,我将简单地用几个步骤来解释这个方法,而不是给你代码。
1.一个数字模10可以让你得到它的最后一位数。
1.将数字除以(整数除法)10将删除最后一位数字。
1.当数字大于0时重复。

v1l68za4

v1l68za42#

int num = int.Parse(inputNumber);
Console.Write(string.Format("{0},{1},{2},{3}", (num/1000) % 100, (num/100) % 10, (num/10) % 10, num % 10));

List<int> listOfInts = new List<int>();
while(num > 0)
{
    listOfInts.Add(num % 10);
    num = num / 10;
}
Console.Write("{0},{1},{2},{3}", listOfInts[3], listOfInts[2], listOfInts[1], listOfInts[0]);
bvk5enib

bvk5enib3#

不需要通过除法或模运算符来完成。使用LINQ。您可以使用LINQ获得整数数组,如下所示:

string inputNumber= "1234"
var intList = inputNumber.Select(digit => int.Parse(digit.ToString()));

然后,您可以简单地使用它,因为你想要像这样:

Console.Write("{0},{1},{2},{3}", intList[0]/1000, intList[1], intList[2], intList[3]);

或者简单地使用除法和模运算符来实现您想要的方式:

public int[] ParseIntString(int number)
{
    List<int> digits= new List<int>();
    while(number> 0)
    {
        digits.Add(number% 10);
        number= number/ 10;
    }
    digits.Reverse();
    return digits.ToArray();
}
lsmd5eda

lsmd5eda4#

希望这对你有帮助

int[] values;
        Seperate(inputNumber, out values);
        Console.Write("{0},{1},{2},{3}", values[0] / 1000, values[1], values[2], values[3]);
        Console.ReadKey();
    }
    public static void Seperate(string numbers, out int[] values)
    {
        values = new int[numbers.Length];
        for (int x = 0; x <= numbers.Length - 1; x++)
        {
            values[x] = int.Parse(numbers[x].ToString());
        }
    }
f4t66c6m

f4t66c6m5#

我刚开始上一门编程课,也把这个作为家庭作业,我先在excel中做,因为我觉得这比一遍又一遍地运行代码要容易,而且这更像是一个数学问题而不是编程问题。
假设号码是4352。
第一个数字很简单,它是整数/ 1000 = 4。
然后乘以1000得到4000,去掉它得到352,这个整数/ 100就是3。
然后乘以100得到300,去掉它得到52,/ 10的整数是5,乘以10去掉它得到2。
刚刚读到你必须使用%,所以我建议把最后一个数字取为10的模

相关问题