【发布时间】:2015-11-22 20:18:46
【问题描述】:
我发现最接近这个问题的答案是使用 for 循环将几个字符串输入转换为一个数组。
我只想取 1 个字符串并将前 7 位数字转换为 int 数组。
此代码获取字符的整数值,然后根据 Unicode 值对它们进行测试以返回 true,如果有效,则返回 false,以重复 while 循环并再次请求输入。当我使用 Console.Read();方法,并先输入一个无效值,它会说我的代码在 7 次以上迭代中都无效。这意味着即使字符串具有有效输入,console.Read() 也必须再运行 7 次。
public static void GetDigits(ref int[] callNumberArray, ref bool valid)
{
Console.WriteLine("Please enter the code you wish to dial.");
while ( valid == false)
{//This loop will reiterate the read() function if the code is not valid.
valid = true;
for (int i = 0; i < 7; i++ )
{
if (i != 6 && i!= 5 && i != 5 && i != 4 && i != 3 && i != 2 && i != 1 && i != 0)
{
i = 0;
}
callNumberArray[i] = Console.Read();// I want to change this
}
for (int i = 0; i < 7; i++)
{
if (i != 6 && i != 5 && i != 5 && i != 4 && i != 3 && i != 2 && i != 1 && i != 0)
{
i = 0;
}
if (callNumberArray[0] == 53)
{
valid = false;
}
if (callNumberArray[i] < 49)
{
valid = false;
}
if (callNumberArray[i] > 57 && callNumberArray[i] < 65)
{
valid = false;
}
if (callNumberArray[i] > 90 && callNumberArray[i] < 97)
{
valid = false;
}
if (callNumberArray[i] > 122)
{
valid = false;
}
}
if (valid == false)
{
Console.WriteLine("You entered an invalid code. Please re-enter your code.");
}
}
【问题讨论】:
-
if (i != 6 && i!= 5 && i != 5 && i != 4 && i != 3 && i != 2 && i != 1 && i != 0)行有什么意义?您有多少次看到循环变量的值超出循环范围? -
我的代码中出现了一个错误,导致 i 的值变为 33 和 38,我认为这是因为 while 循环重复了 for 循环,所以我使用了用于控制 i 变量。
-
我想我对你的问题的回答是 2 次。 :)
-
the value of i to become 33, and 38这是不可能的。只是不要将i从for语句中修改出来 -
我运行了调试程序,并逐步完成了程序,我向你保证。