关于数组下标越界问题

关于数组下标越界问题

在这里输入代码,可通过选择【代码语言】突出显示


floatArray[0]=new float[3];//1行3列

System.out.println(floatArray[0][3]);

下标的初始是0,为什么3列是new float[3];而不是new float[2];?

上面写了floatArray[0]=new float[3];已经定义了1行3列,

为什么System.out.println(floatArray[0][3]);又越界了???

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,floatArray[0]=new float[3];是第一行有3列,其中new float[3]中的3指的是数组的长度,不是下标。

例如:

http://img1.sycdn.imooc.com//climg/5f8e77b109008ebf05820372.jpg

System.out.println(floatArray[0][3]);中0和3是下标。由于数组中下标从0开始,所以第1行第3列数据应该是floatArray[0][2]。

同学注意区别一下数组长度和下标,这两个是不一样的。

  • 本例子中,是不是有赋值符号“=”,“[]”里面的数据就表示长度(个数),而输出语句“[]”里面的数据就是下标(从0开始算)
    2020-10-22 09:40:57
  • 同学你好,是的,你的理解是正确的。 祝学习愉快~
    2020-10-22 09:42:29
好帮手慕阿慧 2020-10-20 11:38:52

同学你好,数组的下标规定是由0开始的。System.out.println(floatArray[0][3]);代表输出第1行第4列数据,由于第一行总共有3列数据,没有第4列数据,所以会出现下标越界错误。

获取第1行第3列的数据应该是floatArray[0][2],其中下标0代表第1行,下标2代表第3列。

  • 提问者 rock221 #1
    那为什么老师视频里讲的floatArray[0]=new float[3];第一行有3列? 那不应该是第一行有2列吗???
    2020-10-20 11:40:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师