有没有办法在没有条件语句的情况下从数字中获取十位值?

Is there a way to get the tens value from a number without condition statements?

我有一个应用程序,我需要从 10 到 120 之间的数字中的个位、十位和百位值。我在一个小程序中测试了我的理论,但如果不使用 条件,我无法让十位工作陈述。该程序生成数字并通过 if 语句告诉您数字的个位、十位和百位值。 (我只想要偶数)

有没有什么方法可以在不使用 IfSwitch 语句的情况下实现这些结果? (我不知道如何在两个条件下使用后者)

using System;

namespace Digit_tests
{
    class Program
    {   
        static int digit; static int tens; static int ones; static int hundrds;
        public static void Main()
        {   
            hundrds = 0;

            Random rnd = new Random();
            digit = rnd.Next(10,121);

            if (digit % 2 != 0)
            {
                random();
            }
            else {}


            if (digit >= 10 && digit < 20)
            {
                tens = 1;
            }
            else if (digit >= 20 && digit < 30)
            {
                tens = 2;
            }
            else if (digit >= 30 && digit < 40)
            {
                tens = 3;
            }
            else if (digit >= 40 && digit < 50)
            {
                tens = 4;
            }
            else if (digit >= 50 && digit < 60)
            {
                tens = 5;
            }
            else if (digit >= 60 && digit < 70)
            {
                tens = 6;
            }
            else if (digit >= 70 && digit < 80)
            {
                tens = 7;
            }
            else if (digit >= 80 && digit < 90)
            {
                tens = 8;
            }
            else if (digit >= 90 && digit < 100)
            {
                tens = 9;
            }
            else if (digit >= 100 && digit < 110)
            {
                tens = 0;
                hundrds = 1;
            }
            else if (digit >= 110 && digit < 120)
            {
                tens = 1;
                hundrds = 1;
            }
            else if (digit >= 120)
            {
                tens = 2;
                hundrds = 1;
            }
            
            ones = digit - tens * 10;
            if (hundrds == 1)
            {
                ones = ones - 100;
            }

            Console.WriteLine(digit + "\n" + hundrds + "-" + tens + "-" + ones);
            Console.ReadKey();

            Main();
        }

        public static void random()
        {
            Random rnd = new Random();
            digit = rnd.Next(10,121);
            Main();
        }
    }
}

您可以使用余数运算符:

int number = 345;
int tens = (number / 10) % 10;

因此 345 / 10 == 34,并且 34 % 10 = 4

Try it online

您可以使用余数运算符(根据其他答案,这可能更好!),但老实说,对于您的用例,我认为简单地转换为字符串更容易!

    int number = 421;  //The random number

    string numStr = number.ToString(); //Convert to string

    //Now we need to pad with zeros at the beginning if the number is < 100
    //A StringBuilder would be more efficient.

    int padd = 3 - numStr.Length;
    for(int i=0; i < padd; i++)
        numStr = "0" + numStr;
    
    //And output
    Console.WriteLine($"Hundreds {numStr[0]} : Tens {numStr[1]} : Ones {numStr[2]}");

这仅适用于 999 以下的数字,但如果需要,您可以扩展它。

int number = 12345;

int ones = number % 10;     // 5
number /= 10;               // 1234
int tens = number % 10;     // 4
number /= 10;               // 123
int hundreds = number % 10; // 3