争论OutofRange Exception未得到处理

时间:2014-03-21 00:11:42

标签: c# string exception

我的代码翻了一个字,但是它有效,但显示了这个错误:

  

参数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();

5 个答案:

答案 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,这是不合法的。