2 jakeboss jakeboss 于 2017.01.04 16:52 提问

c#数组越界报错,怎么改 也没用,大神请教 5C
c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LIANXI
{
class Program
{

    static void Main(string[] args)
    {
        string str=Console.ReadLine();
        bool isAllUpperChar=true;
        for (int i = 0; i < 5; i++)
        {

            if(str[i] >= 'A' && str[i] <= 'Z')
            {


            }
            else
            {

               isAllUpperChar = false;
                break;

            }

        }
        if (isAllUpperChar==false)
        {
            Console.WriteLine("你输入的字母,不全是大写字母");
        }
        Console.ReadKey();

    }

}

}

按理不会有错,但是不知道具体什么问题,各位该怎么改正

4个回答

Shirly_YY
Shirly_YY   2017.01.04 17:30

你这样写,如果str数组只有4个元素呢,那执行到str[4]的时候是不是就会越界了。
所以应该像楼上的那种写法,判断条件应该为i < str.length;

jakeboss
jakeboss 谢谢了,多多指教!,上面说的都对,我是小菜鸟,刚学,我把5改成了50还是报错,改成Length就对了
12 个月之前 回复
bdmh
bdmh   Ds   Rxr 2017.01.04 17:01

越界问题,你调试一下,应该很好找,你怎么知道一定小于5呢,看你输入的具体内容

Tiger_Zhao
Tiger_Zhao   Rxr 2017.01.04 17:10
for (int i = 0; i < str.Length; i++)
{
    ...
}
jakeboss
jakeboss 谢谢了,多多指教!
12 个月之前 回复
qq_30154391
qq_30154391   2017.01.04 17:39

图片说明
你的tr直接就是"",长度当然不够,你看看下面这个
static void Main(string[] args)
{
string str = Console.ReadLine();
bool isAllUpperChar = true;
for (int i = 0; i < str.Length; i++)
{

            if (Convert.ToChar(str.Substring(i, 1)) >= 'A' && Convert.ToChar(str.Substring(i, 1)) <= 'Z')
            {


            }
            else
            {

                isAllUpperChar = false;
                break;

            }

        }
        if (isAllUpperChar == false)
        {
            Console.WriteLine("你输入的字母,不全是大写字母");
        }
        Console.ReadKey();
    }
jakeboss
jakeboss 请问下一这个substring是什么,要不要加上头文件,谢谢
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!