有没有办法在没有条件语句的情况下从数字中获取十位值?
Is there a way to get the tens value from a number without condition statements?
我有一个应用程序,我需要从 10 到 120 之间的数字中的个位、十位和百位值。我在一个小程序中测试了我的理论,但如果不使用 条件,我无法让十位工作陈述。该程序生成数字并通过 if 语句告诉您数字的个位、十位和百位值。 (我只想要偶数)
有没有什么方法可以在不使用 If 或 Switch 语句的情况下实现这些结果? (我不知道如何在两个条件下使用后者)
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
。
您可以使用余数运算符(根据其他答案,这可能更好!),但老实说,对于您的用例,我认为简单地转换为字符串更容易!
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
我有一个应用程序,我需要从 10 到 120 之间的数字中的个位、十位和百位值。我在一个小程序中测试了我的理论,但如果不使用 条件,我无法让十位工作陈述。该程序生成数字并通过 if 语句告诉您数字的个位、十位和百位值。 (我只想要偶数)
有没有什么方法可以在不使用 If 或 Switch 语句的情况下实现这些结果? (我不知道如何在两个条件下使用后者)
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
。
您可以使用余数运算符(根据其他答案,这可能更好!),但老实说,对于您的用例,我认为简单地转换为字符串更容易!
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