C# 如果我没有';我不知道它是怎么翻过来的?
很容易看出G在A和Z之间,但如果我让用户输入从C# 如果我没有';我不知道它是怎么翻过来的?,c#,C#,很容易看出G在A和Z之间,但如果我让用户输入从56AAA7105A25到56AAA71064D6的序列号范围,我如何确定另一个序列号或范围是否在前面指定的两个序列号之间。为了让我知道它是否落在它们之间,我不需要知道它是如何滚动的。我面临的问题是,根据代码(在本例中为c#),一个值将被视为大于或小于我指定的两个值,但根据用户的说法,他们输入的值实际上超出了范围。如何处理这种情况?您可以将序列号转换为int,然后检查其中一个是否介于其他序列号之间。如果序列号只是十六进制数,这一点也不难,如果它们由整
56AAA7105A25
到56AAA71064D6
的序列号范围,我如何确定另一个序列号或范围是否在前面指定的两个序列号之间。为了让我知道它是否落在它们之间,我不需要知道它是如何滚动的。我面临的问题是,根据代码(在本例中为c#),一个值将被视为大于或小于我指定的两个值,但根据用户的说法,他们输入的值实际上超出了范围。如何处理这种情况?您可以将序列号转换为int,然后检查其中一个是否介于其他序列号之间。如果序列号只是十六进制数,这一点也不难,如果它们由整个字母表组成,您只需构建一个函数,以给定的基数转换数字(我猜0-9+a-Z等于25)将A-Z视为值为10-25的数字。您可以将序列号转换为整数,然后检查其中一个是否介于其他数字之间。如果序列号只是十六进制数,这一点也不难,如果它们由整个字母表组成,您只需构建一个函数,将给定基数的数字(我猜0-9+a-Z是25)转换为整数。只需将a-Z视为值为10-25的数字。是。您需要知道序列号是如何定义的。如果您不知道两个序列号是如何比较的,那么您的代码也无法正确地进行比较。是的。您需要知道序列号是如何定义的。如果您不知道两个序列号的比较方式,那么您的代码也将无法获得正确的结果。假设这些是十六进制数,您应该能够将它们转换为长整数(对于48位的32位整数来说,它们太大了)
class Program
{
static void Main(string[] args)
{
SerialNumber first = new SerialNumber("56AAA7105A25");
SerialNumber second = new SerialNumber("57AAA71064C6");
SerialNumber third = new SerialNumber("58AAA71064D6");
Console.WriteLine(first.CompareTo(second));
Console.WriteLine(second.CompareTo(third));
Console.ReadLine();
}
}
struct SerialNumber : IComparable<SerialNumber>
{
public string Serial { get; set; }
public SerialNumber(string serial) : this()
{
this.Serial = serial;
}
public int CompareTo(SerialNumber other)
{
int compareTo = 0;
using (CharEnumerator enum1 = Serial.GetEnumerator())
using (CharEnumerator enum2 = other.Serial.GetEnumerator())
{
while (enum1.MoveNext() && enum2.MoveNext())
{
if (enum1.Current != enum2.Current)
{
compareTo = enum1.Current.CompareTo(enum2.Current);
break;
}
}
}
return compareTo;
}
}
或者,如果您确实知道有效数字是什么,并且它们不是自然顺序,则可以创建一个自定义类,重写
运算符,并在输入已知无效值时引发异常。假设这些是十六进制数,您应该能够将它们转换为长字符串(它们对于48位的32位整数来说太大了)
或者,如果您确实知道有效数字是什么,并且它们不是按自然顺序排列的,则可以创建一个自定义类,重写
运算符,并在输入已知无效值时引发异常。只需从左到右遍历数字即可(不要忘记将所有数字的零填充到相同的长度),并比较此位置上的两个数字/字母。如果它们不同,则可以打破循环。只需从左到右遍历数字(不要忘记将所有数字的零填充到相同的长度),并比较此位置上的两个数字/字母。如果它们不同,则可以中断循环。类似的内容如何
class Program
{
static void Main(string[] args)
{
SerialNumber first = new SerialNumber("56AAA7105A25");
SerialNumber second = new SerialNumber("57AAA71064C6");
SerialNumber third = new SerialNumber("58AAA71064D6");
Console.WriteLine(first.CompareTo(second));
Console.WriteLine(second.CompareTo(third));
Console.ReadLine();
}
}
struct SerialNumber : IComparable<SerialNumber>
{
public string Serial { get; set; }
public SerialNumber(string serial) : this()
{
this.Serial = serial;
}
public int CompareTo(SerialNumber other)
{
int compareTo = 0;
using (CharEnumerator enum1 = Serial.GetEnumerator())
using (CharEnumerator enum2 = other.Serial.GetEnumerator())
{
while (enum1.MoveNext() && enum2.MoveNext())
{
if (enum1.Current != enum2.Current)
{
compareTo = enum1.Current.CompareTo(enum2.Current);
break;
}
}
}
return compareTo;
}
}
类程序
{
静态void Main(字符串[]参数)
{
SerialNumber first=新的SerialNumber(“56AAA7105A25”);
SerialNumber second=新序列号(“57AAA71064C6”);
SerialNumber第三个=新的SerialNumber(“58AAA71064D6”);
Console.WriteLine(第一个,比较(第二个));
控制台写入线(第二个与第三个相比);
Console.ReadLine();
}
}
结构SerialNumber:IComparable
{
公共字符串序列{get;set;}
公共序列号(字符串序列号):this()
{
这个.Serial=Serial;
}
公共整数比较(序列号其他)
{
int compareTo=0;
使用(CharEnumerator enum1=Serial.GetEnumerator())
使用(CharEnumerator enum2=other.Serial.GetEnumerator())
{
while(enum1.MoveNext()&&enum2.MoveNext())
{
if(enum1.Current!=enum2.Current)
{
compareTo=enum1.Current.compareTo(enum2.Current);
打破
}
}
}
返回比较;
}
}
像这样的东西怎么样
class Program
{
static void Main(string[] args)
{
SerialNumber first = new SerialNumber("56AAA7105A25");
SerialNumber second = new SerialNumber("57AAA71064C6");
SerialNumber third = new SerialNumber("58AAA71064D6");
Console.WriteLine(first.CompareTo(second));
Console.WriteLine(second.CompareTo(third));
Console.ReadLine();
}
}
struct SerialNumber : IComparable<SerialNumber>
{
public string Serial { get; set; }
public SerialNumber(string serial) : this()
{
this.Serial = serial;
}
public int CompareTo(SerialNumber other)
{
int compareTo = 0;
using (CharEnumerator enum1 = Serial.GetEnumerator())
using (CharEnumerator enum2 = other.Serial.GetEnumerator())
{
while (enum1.MoveNext() && enum2.MoveNext())
{
if (enum1.Current != enum2.Current)
{
compareTo = enum1.Current.CompareTo(enum2.Current);
break;
}
}
}
return compareTo;
}
}
类程序
{
静态void Main(字符串[]参数)
{
SerialNumber first=新的SerialNumber(“56AAA7105A25”);
SerialNumber second=新序列号(“57AAA71064C6”);
SerialNumber第三个=新的SerialNumber(“58AAA71064D6”);
Console.WriteLine(第一个,比较(第二个));
控制台写入线(第二个与第三个相比);
Console.ReadLine();
}
}
结构SerialNumber:IComparable
{
公共字符串序列{get;set;}
公共序列号(字符串序列号):this()
{
这个.Serial=Serial;
}
公共整数比较(序列号其他)
{
int compareTo=0;
使用(CharEnumerator enum1=Serial.GetEnumerator())
使用(CharEnumerator enum2=other.Serial.GetEnumerator())
{
while(enum1.MoveNext()&&enum2.MoveNext())
{
if(enum1.Current!=enum2.Current)
{
compareTo=enum1.Current.compareTo(enum2.Current);
打破
}
}
}
返回比较;
}
}
如果你不知道确定顺序的算法,那么你需要找到它。你可以尝试猜测,但这可能会导致长期的痛苦,因为算法不需要简单
一定有人能告诉你答案吗?你的用户听起来好像有一些想法(至少足以告诉你你错了),无论是谁指定了你正在编写的代码都应该这样做(如果合适的话)或者