我想根据C#
中的用户输入设置范围编号(例如:1-10)。
我有一个asp文本框,按钮。用户可以在文本框中输入小于10,000的数字。
我想,当用户点击按钮时,用户可以获得他输入值的范围。
例如 - 如果用户在文本框中输入"35"
,则会获得"Number Range: (31-40)"
。
但是,我有一些制作范围的特殊条件 -
如果在 -
之间输入数字 a)1到50范围的长度是10 - 例如输入数字是 - 49
,范围是(41-50)
。
b)51到100范围的长度是25 - 例如输入数字是 - 78
,范围是(76-100)
。
c)101到200范围的长度是50 - 例如,输入数字是 - 135
,范围是(101-150)
。
d)201到400范围的长度为100 - 例如输入数字为 - 245
,范围为(201-300)
。
依旧........
我使用Switch Case
但是,我没有成功创建正确的逻辑来获得此功能。
感谢您的帮助......我们将不胜感激。
答案 0 :(得分:1)
一个简单的方法是使用if和else-if like:
if(number < 0)
{
// number below zero
}
else if(number < 10)
{
// range 0 - 9
}
else if(number < 40)
{
// range 10 - 39
}
else if(number < 200)
{
// range 40 - 199
}
else if(number < 1000)
{
// range 200 - 999
}
else
{
// range 1000 -
}
答案 1 :(得分:1)
尝试这个,没有任何if / else /开关,只是好老数学:
int x = yourNumber;
int maxRange = 50;
while (x > maxRange) maxRange *= 2;
int range = maxRange / 4 / 5 * 5;
int begin = ((x-1) / range * range) + 1;
int end = begin + range - 1;
begin
和end
是你的范围的开始和结束,我想你可以自己做其余的事。
答案 2 :(得分:0)
我想只有101以下的数字是专门的,否则它似乎符合一个特定的公式,一个可能的解决方案如下:
public static int[] GetRagneOf(int value) {
var x=value>0?(value-1)/50:0;
var power=Math.Log(x, 2);
var count=25*(int)Math.Pow(2, power);
var start=1+25*(int)Math.Pow(2, 1+power);
if(value<101) {
if(value<76) {
if(value<51) {
count=10;
start=1+value-(value%10);
}
}
else {
start+=count;
}
}
return Enumerable.Range(start, count).ToArray();
}
答案 3 :(得分:0)
我认为这就是你要找的Enumerable.Range
int num = 35;
if (num <= 50)
{
int divisor = 10;
int quotient = num / divisor;
var result = Enumerable.Range((quotient * divisor) + 1, divisor).ToArray();
}
else if (num <= 100 )
{
//I assume you can expand yourself
}
答案 4 :(得分:0)
这是我如何做的一个例子,因为从最初的问题来看,结果应该是字符串,数组还是其他什么都不清楚。
class Program {
static void Main(string[] args) {
int[] numbers = { 49, 78, 135, 245, 0, 1, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 400};
foreach(var number in numbers) {
string result = GetRange(number);
Console.WriteLine(string.Format("Input: {0}\tResult: {1}",number, result));
}
Console.ReadKey();
}
private static string GetRange(int number) {
if(number <= 50) {
return RangeByQuotient(number, 10);
} else if(number <= 100) {
return RangeByQuotient(number, 25);
} else if(number <= 200) {
return RangeByQuotient(number, 50);
} else if(number <= 400) {
return RangeByQuotient(number, 100);
}
return "Invalid Range";
}
private static string RangeByQuotient(int number, int quotient) {
var lower = ((number-1) / quotient) * quotient + 1;
var upper = (((number-1) / quotient)+1) * quotient;
return string.Format("({0}-{1})", lower, upper);
}
}
结果
Input: 49 Result: (41-50)
Input: 78 Result: (76-100)
Input: 135 Result: (101-150)
Input: 245 Result: (201-300)
Input: 0 Result: (1-10)
Input: 1 Result: (1-10)
Input: 50 Result: (41-50)
Input: 51 Result: (51-75)
Input: 100 Result: (76-100)
Input: 101 Result: (101-150)
Input: 150 Result: (101-150)
Input: 151 Result: (151-200)
Input: 200 Result: (151-200)
Input: 201 Result: (201-300)
Input: 300 Result: (201-300)
Input: 301 Result: (301-400)
Input: 400 Result: (301-400)
<强>更新强> 更新以正确处理边框情况,如50,51等。