0

假设有人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, ?, ?, ?;
            }

对于任何给定的四位数字输入,有什么指导方针可以使这成为可能吗?

4

4 回答 4

4

由于这似乎是一个家庭作业问题,因此我将通过几个步骤简单地解释该方法,而不是给您代码。将输入解析为整数后,

  1. 以 10 为模的数字允许您获得其最后一位数字。
  2. 将数字除以 10(整数除法)会删除最后一位数字。
  3. 当数字大于 0 时重复。
于 2013-09-05T02:34:46.507 回答
3
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]);
于 2013-09-05T02:36:56.643 回答
2

无需通过除法或模运算符来执行此操作。使用 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();
}
于 2013-09-05T02:32:32.057 回答
0

我希望这可以帮助你

            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());
        }
    }
于 2013-09-05T02:49:04.117 回答