【发布时间】:2022-01-23 02:00:16
【问题描述】:
您好,如果您能帮助我修复此代码,我将不胜感激。我需要使用 Do While 循环。 我收到“超出范围”错误。 我相信我需要在某处减去或添加 1,但无法确定确切的位置。
public static int Digit(string str)
{
if (str is null)
{
throw new ArgumentNullException(nameof(str));
}
int count = 0;
int i = 0;
do
{
if (char.IsDigit(str[i]))
{
count++;
}
i++;
}
while (i < str.Length);
return count;
}
提前谢谢你。
【问题讨论】:
-
发生这种情况是因为您没有检查字符串是否足够长以在
char.IsDigit(str[i])之前的索引i处包含一个字符。 -
@user9938 不应该没问题,因为在检查
while条件之前它会增加i。但是,它 会 因空字符串而失败 (length==0)。但是您可以在do循环之前或在do循环中轻松检查,然后再获取字符。 -
如果可以使用
str.Length,那么使用循环计算str.Length的值是什么意思??? -
我刚刚测试过,一切都很好,除了验证。
-
@Dominique 他们说使用 do/while 是“必需的”,所以我假设这是一项作业。
标签: c#