如何判断一组数字就是1到10
输入一组数字。必须是1234567890这10位,不能重复。可以颠倒。
我这么写的:
string myStr=this.textbox1.Text;
if (myStr.Length != 10)
{
Response.Write( "字母个数不对 " + " <br> ");
return;
}
string[] theOrder = new string[10];
//赋值
for (int i = 0; i < 10; i++)
{
theOrder[i] = myStr.Substring(i, 1);
}
//判断是否符合规则
for (int i = 0; i < 10; i++)
{
bool ifTheNumber= false;
for (int k = 1; k < 11; k++)
{
if (theOrder[i] == k.ToString())
{
ifTheNumber= true;
break;
}
}
if (ifTheNumber== false)
{
Response.Write( "不等于1到6之间的数! ");
return;
}
for (int j = 0; j < 10; j++)
{
if (i != j && theOrder[i] == theOrder[j])
{
Response.Write( "有重复! ");
return;
}
}
}
只能写出这样的办法了,觉得太垃圾。有没有比较好的计算方法。
[解决办法]
使用正则表达式
[解决办法]
string myStr=this.textbox1.Text;
char[] dic = new char[] { '1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 ', '0 '};
bool[] IsD = new bool[10];
if (myStr.Length != 10)
{
Response.Write( "字母个数不对 " + " <br> ");
return;
}
for(int i=0;i <10;i++)
{
int index = Contains(myStr[i]);
if(index == -1)
{
Response.Write( "不包括 " + " <br> ");
return;
}
IsD[index]++;
if(IsD[index] > 1)
{
Response.Write( "重复了 " + " <br> ");
return;
}
}
//function
int Contains(char str)
{
for(int i=0;i <dic.Length;i++)
{
if(str == dic[i])
return i;
}
return -1;
}