IndexOutOf下标越界几种解决方案
目录
python下标越界list index out of range
Java下标越界java.lang.ArrayIndexOutOfBoundsException
Java String index out of range
C#数组下标越界System.IndexOutOfRangeException
PHP数组下标越界Notice: Undefined offset:1
python下标越界list index out of range
python里说的是list越界,其实也就是列表,格式是【arr=["1","2","3"]】这样的,如果输出的时候超出下标数量就会报这个异常。来我们截图看一下。
还是很明显的。
Java下标越界java.lang.ArrayIndexOutOfBoundsException
无论是数组还是集合列表在下标越界的时候都会报这个异常,只是后续提示的内容有所区别,我们来看一下:
String [] arr=new String[10];
System.out.println(arr[11]);
ArrayList<Integer> arr=new ArrayList<Integer>();
System.out.println(arr.get(11));
Java String index out of range
Java字符串超出索引的范围,这里的out of是【越出…之外】的意思,range就是【范围】,超出范围肯定会报错的。
C语言数组下标越界out terminated
#include <stdio.h>
int main() {
int a[10]={0};
a[10] = 0;
return 0;
}
C语言的下标越界报错有些不同。
*** stack smashing detected ***: ./970872.out terminated
可以看到包的错不是index out of,是out terminated,也就是超出终止范围。
画一个小爱心,祝大家都能顺利解决各种bug。
C++数组下标越界不报错
C++比较特殊,下标越界的时候啥也不报,这个挺难受的。
#include <stdio.h>
#include <iostream>
#include <math.h>
int main() {
using namespace std;
char a[]={'1','2'};
cout << a[5]<<endl;
return 0;
}
很明显的上列代码是有越界的,执行的时候啥都没有,不报错。
linux平台或者g++编译器对下标越界问题有自己的处理,导致程序不挂。而Visual c++编译器对下标越界不进行处理,程序挂掉。
来个好看一些的心来平绪一下心情吧:
C#数组下标越界System.IndexOutOfRangeException
C#的越界和Java的差不多,都会提示出来,直接说明是怎么回事。有中文提示还是挺方便的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace demo20221008
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[5];
Console.WriteLine(arr[6]);
}
}
}
PHP数组下标越界Notice: Undefined offset:1
这是PHP的数组下标越界,一看就明白,未定义的开端,也就是没有这个开始。那肯定就是越界了。
总结
其它小众的语言我就不举例了,我们挨个看了看常用的语言数组下标越界的情况,从而能在以后的异常中快速定位问题所在快速解决bug。
异常是很常见的,一个不会解决bug的程序员是很难找到成就感的,当你突破一个个bug后那种自豪感还是很棒的。
- 点赞
- 收藏
- 关注作者
评论(0)