我的代码翻了一个字,但是它有效,但显示了这个错误:
参数OutofRange异常未处理
行strFlippedWord = strUserWord.Sub...
string strUserWord;
string strFlippedWord;
int intWordLength;
System.Console.WriteLine("Please enter a word to flip: ");
strUserWord = System.Console.ReadLine();
intWordLength = strUserWord.Length;
while (intWordLength != -1)
{
strFlippedWord = strUserWord.Substring(intWordLength - 1, 1);
System.Console.Write(strFlippedWord);
intWordLength -= 1;
}
System.Console.ReadKey();
答案 0 :(得分:1)
你的循环时间太长了。
while (intWordLength > 0)
另外,你可以完全消除循环并使用一点LINQ:
Console.WriteLine(strUserWord.Reverse().ToArray());
答案 1 :(得分:0)
当intWordLength
为0时,将-1作为第一个参数传递给String.Substring,这是一个无效的参数。将您的while
条件更改为while( intWordLength > 0 )
。
答案 2 :(得分:0)
这样的事可能有用:
while (intWordLength != -1)
{
if (intWordLength == 0)
{
break;
}
strFlippedWord = strUserWord.Substring(intWordLength - 1, 1);
System.Console.Write(strFlippedWord);
intWordLength -= 1;
}
答案 3 :(得分:0)
你是从字符串中的最后一个字符开始,然后是1个元素
尝试:
strFlippedWord = strUserWord.Substring(intWordLength - 1, 0);
如果您尝试反转字符串
strFlippedWord = new string(strUserWord.Reverse().ToArray());
修改的
正如babak所说的关于intwordlength:
while语句可能是
while(!(intwordlength < 1) )
答案 4 :(得分:0)
当intWordLength为0时,Substring会抛出您看到的异常。
http://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx
在这种情况下,你传递-1,这是不合法的。