c# - For 循环没有按应有的方式执行 C#
问题描述
所以,我是 C# 的学习者,我正在创建一个简单的应用程序,让您输入一个字符串代码,然后输入另一个字符串,如果(string1 == string2)它输出“访问权限”,如果不是它说“错误的代码,再试一次”,然后重新开始。现在我想创建一个变量 NumberOfTries,如果(NumberOfTries == 0)输出“安全锁定”并退出程序。问题是它只通过循环 2 次,我不知道为什么,不管我给它什么价值。这是代码:
int NumberOfTries = 3; //Even when = 10, it only goes 2 times
Console.WriteLine("Safe code: ");
string input= Console.ReadLine();
Console.WriteLine("Safe code is: " +input);
for (int i = 0; i < NumberOfTries; i++)
{
Console.WriteLine("Input code: ");
string code= Console.ReadLine();
if (input == code)
{
Console.WriteLine("Access granted!");
break;
}
else
{
Console.WriteLine("Wrong code, try again!");
NumberOfTries--;
}
}
if (NumberOfTries == 0)
Console.WriteLine("Safe locked!");
Console.ReadKey();
解决方案
如果您在 NumberOfTries 设置为 10 的情况下获得 2 次通过,那么您在再次执行代码之前没有重新编译代码。在 NumberOfTries 设置为 10 的情况下运行该代码会给您 5 次尝试。for
这是因为您在每次尝试失败时都会减少循环的条件。
条目检查:i=0,NumberOfTries = 10
第二次检查:i = 1,NumberOfTries = 9
第三次检查:i = 2,NumberOfTries = 8
第 4 次检查:i = 3,NumberOfTries = 7
第 5 次检查:i = 4,NumberOfTries = 6
第 6 次检查:i = 5,NumberOfTries = 5 -> Bail
要获得所需的行为,您应该区分最大尝试计数和尝试次数:
int maxTries = 3;
int numberOfTries = 0;
Console.WriteLine("Safe code: ");
string input= Console.ReadLine();
Console.WriteLine("Safe code is: " +input);
for (int i = 0; i < maxTries; i++)
{
numberOfTries++;
Console.WriteLine("Input code: ");
string code= Console.ReadLine();
if (input == code)
{
Console.WriteLine("Access granted!");
break;
}
else if (numberOfTries < maxTries)
{
Console.WriteLine("Wrong code, try again!");
}
}
if (numberOfTries >= maxTries)
Console.WriteLine("Safe locked!");
Console.ReadKey();
我们允许循环遍历允许的尝试数 (maxTries) 并记录尝试,而不是尝试减少尝试计数,而是增加尝试计数器 (numberOfTries)。当用户出错时,我们只需在显示“再试一次”之前检查他们是否没有进行最后一次尝试,并在退出循环时检查他们是否在锁定之前使用了所有尝试。
您可以修改 C#for
循环的条件,但在执行此操作时需要小心以避免意外的副作用。
推荐阅读
- python - 计算熊猫字符串中出现的 1 的数量
- c - 为什么 afl fuzzer 会出现分段错误?
- python - python3:如何在类属性上使用 for 循环和 if 语句?
- python - 在一个网页上抓取多个单独的表格
- mysql - MySQL在结果集中添加缺少的月份
- delphi - 为什么 TFormatSettings 使用不正确的 ShortTimeFormat?
- excel - 查找一组文本的宽度
- c++ - 是否可以使用 std::array 作为 POD 结构的数据容器?
- powerbi - 将费用计算为上一年收入百分比的措施
- python - 为什么它会忽略我在 for 循环中的继续?