如何循环数组C#
我试图在消息框中显示以下密码。我想做的是通过消息框给用户第一个密码,即111111。在给出111111之后,用户下次请求另一个密码时,它将是2222222,依此类推。如果所有密码都用完了,循环将简单地返回到111111、222222、333333等。。。我该怎么做?谢谢你的帮助 这是我的密码:如何循环数组C#,c#,arrays,loops,C#,Arrays,Loops,我试图在消息框中显示以下密码。我想做的是通过消息框给用户第一个密码,即111111。在给出111111之后,用户下次请求另一个密码时,它将是2222222,依此类推。如果所有密码都用完了,循环将简单地返回到111111、222222、333333等。。。我该怎么做?谢谢你的帮助 这是我的密码: int[] password; password = new int[10]; pa
int[] password;
password = new int[10];
password[0] = 000000;
password[1] = 111111;
password[2] = 222222;
password[3] = 333333;
password[4] = 444444;
password[5] = 555555;
password[6] = 666666;
password[7] = 777777;
password[8] = 888888;
password[9] = 999999;
MessageBox.Show("Your password is ...");
return;
听起来你并不是真的在这里循环-你只是想维护一个索引。毕竟,“为用户提供密码”听起来像是事件驱动的,而不是我们的代码重复的 两种选择:
- 保留密码列表,并在其中保留“当前索引”。每次递增索引,到达末尾时循环回0
- 改用
,无论何时显示密码,都要在末尾添加一个新密码队列
是一种非常糟糕的密码类型,除非你真的把用户限制在数字键盘上。即使这样,您也应该真正区分“0001”和“1”,这是int
值无法区分的int
- 学习使用数组初始值设定项。示例代码的大部分相当于:
int[] password = { 0, 111111, 222222, 333333, 444444, 555555, 666666, 777777, 888888, 999999 };
- 重复使用的硬编码密码列表。。。真的吗
GetPassword().GetEnumerator()
,然后将枚举器提供给另一个实际返回密码的方法GetNextPassword来获取枚举器(每个用户一次,或所有用户相同,具体取决于用法)
int GetNextPassword(IEnumerator<int> enumerator)
{
enumerator.MoveNext();
return enumerator.Current;
}
int GetNextPassword(IEnumerator枚举器)
{
枚举数。MoveNext();
返回枚举数.Current;
}
但是现在还不是很漂亮。对于您的特定场景,我建议使用:
只需将
count
变量初始化为1,这样用户第一次请求时就可以显示密码[count],依此类推,然后只需检查count是否为=
数组长度。不,不会。对单个调用GetPassword()
返回的值调用MoveNext()
/Current
将返回下一个密码。这是一个很大的区别-您需要调用此方法一次并隐藏返回值。+1“一个重复使用的硬编码密码列表…真的吗?”@CantHandleMeBabe是的,实际上不要使用while
循环。我只是想向您展示出列的行为。@CantHandleMeBabe取决于具体情况。用户如何要求另一个密码?顺便说一句,你读了乔恩·斯基特答案中的旁白了吗?我不知道你是真的在这样做,还是只是编了个例子。我在这样做,用户会按一个按钮获取密码,比如111111。如果他再次按下该按钮,消息框将显示2222222,依此类推。@CantHandleMeBabe在按钮的方法中单击putMessageBox.Show(“您的密码是”+passwords.Dequeue();
。密码始终是111111…我放置了MessageBox.Show(“您的密码是”+passwords.Dequeue());
在foreach循环之外。
MessageBox.Show(String.Format("Your password is {0}", GetPassword());
int GetNextPassword(IEnumerator<int> enumerator)
{
enumerator.MoveNext();
return enumerator.Current;
}
using System.Collections;
Queue passwords = new Queue();
foreach (int p in new int[]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 })
{
passwords.Enqueue(p);
}
//just to show you that it's FIFO (first-in, first-out)
while (passwords.Count > 0)
{
MessageBox.Show("Your password is " + passwords.Dequeue();
}