【问题标题】:Simple loop, not so simple Error简单的循环,不是那么简单的错误
【发布时间】:2023-03-21 07:41:02
【问题描述】:

我遇到了一个让我发疯的错误......我找不到这段代码有什么问题,有人会这么好心给我一些帮助吗?


using System;

class Program
{
    static void Main(string[] args)
    {   
        for(int i = args[0].Length; i >= 1; i--){
            Console.WriteLine(args[0].Substring(i, 1));
        }
    }
}

一个运行示例应该是这样的:program.exe 6735

输出将如下所示:

5

3

7

6

到目前为止,我唯一得到的是:

未处理的异常:System.ArgumentOutOfRangeException:startIndex + length > this.length 参数名称:length at System.String.Substring (Int32 startIndex, Int32 长度) [0x00000] in :0 在 Program.Main (System.String[] args) [0x00000] 在 :0

提前感谢您的帮助!

【问题讨论】:

    标签: c# for-loop


    【解决方案1】:

    for(int i = args[0].Length; i >= 1; i--)

    应该是

    for(int i = args[0].Length - 1; i >= 0; i--)

    【讨论】:

    • 非常感谢! :) 那只是完美的解决方案!。我没有意识到 args[0].Length 在 12345 的情况下是 5,但每个数字的索引从 0 到 4 而不是从 1 到 5!,应该以前见过
    【解决方案2】:

    args[0].Length 是字符串的长度。由于字符串是0 索引的,因此长度是字符串中最后一个字符的一个索引。

    如果你想反向循环一个字符串,你应该在Length - 1开始你的迭代器。

    【讨论】:

    • args[0].Length 不是数组的长度,是数组索引 0 处包含的元素的长度。无论如何,谢谢您的回复。
    • @AcidRod75 你是对的,对不起。它是字符串的长度,而不是数组,包含在“args[0]”中。我会适当地编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多