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就对了
一年多之前 回复
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 谢谢了,多多指教!
一年多之前 回复
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是什么,要不要加上头文件,谢谢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C# 数组越界的一场处理
数组越界的异常处理 static void Main(string[] args) { double[] a = { 1,23,56,32,56,8,89,32,56,77}; double pjcj = 0; int i; try { for(i=0;i
数组越界,程序为何不报错AV
 今天发现了一个很奇怪的现象,例如:void show(int a[5]){    int c[8];    for (int i = 0; i     {        c[i] = a[i];    }    cout }int main(int argc, char* argv[]){    int a[2] = {1, 2};    show(a);    system("paus
Array 越界不报错的问题
C/C++是不检查数组下标是否越界的?奇怪的事情。。。不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。 自己写了一段检测程序测试这个问题,发现如果数组下标越界了,那么它会自动接着那块内存往后写。想了一下明白了,以前说不允
qRCodeEncoder.Encode 数组越界
从网上下载ThoughtWorks.QRCode.dll解压发现有很多版本,果断选择最后一个 生成二维码的代码 private Bitmap GetCode(string code) { QRCodeEncoder qRCodeEncoder = new QRCodeEncoder(); //设置二维码编码格式
sim_标准版_工作需要
工作需要,我说csdn你要我描述这么多有什么用,别人下了也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用也没用
jxl Workbook.getWorkbook(is)数组越界的问题解决
       今天解析.xls文件时出现了数组越界,头一下蒙了。关键时,还是出问题,时间紧,哎......      不过一下子找到了解决问题的方法,我只是误打误撞,不知道跟我出现同样问题的同志是不是也是这问题引起的。好了,不费话了,说说我是怎么解决的吧,很简单的哦。看图:    看到文件名没:192.168.1.200    看到sheet底部了没: ScanInfo       呵呵,我只将ScanInfo改成192.168.1.200就解决了!简单吧       按理来说不改也可以的,但就是有数组越界
两道“诡异”的数组越界问题的分析
1、数组越界引起的死循环问题:#include "stdafx.h"int main(int argc, char* argv[]) { int i = 0; int arr[3] = {0}; for(i = 0; i<=3; i++){ arr[i] = 0; printf("hello world\n"); } return
在for循环中remove list报错越界的问题
最近在搞一个购物车的功能,里面有一个批量删除的操作,采用的是ExpandableListView以及BaseExpandableListAdapter。视乎跟本篇无关紧要,主要是为了记录一个java基础。迭代器iterator的使用一、错误代码(主要就是购物车的批量删除)
python数组越界错误解决
当我们定义一个空的数组的时候如,ip=[] 如果我们直接ip[i]="sss"的话会报越界错误 out of range之类的 解决办法是ip.append("sss”)用append添加
C++中将数组作为形参时防止访问越界的几种方法
C++中数组作为形参传递给函数时把数组视为指针,并没有将数组的长度信息传递给函数,因而在函数中稍有不慎就会造成数组内存的越界访问。为了避免这个问题,下面根据书上给的内容做了一点总结和说明。 数组形参的定义 void func(int *) {/* ...*/} void func(int[]) {/* ... */} void func(int[10]) {/* ...*/} 上面三种形