为什么这个一直是错的呢?

为什么这个一直是错的呢?

package com.imooc;

import java.util.Scanner;

public class Demo2 {

	public static void main(String[] args){
	       //定义一个三行两列的整型二维数组intArray
	        int [][]intArray=new int[3][1];
	        int ysum=0,yavg=0,msum=0,mavg=0;
	       //从键盘输入学生成绩,要求输入顺序与效果图一致
	        Scanner sc=new Scanner(System.in);
	        for(int i=0;i<intArray.length;i++) {
	        	System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
	        	intArray[i][0]=sc.nextInt();
	        	System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
	        	intArray[i][1]=sc.nextInt();
	        	ysum+=intArray[i][0];
	        	msum+=intArray[i][1];
	        }
	        yavg=ysum/3;
	        mavg=msum/3;
	       //求语文的总成绩和平均分
	        
	        System.out.println("语文的总成绩为:"+ysum);
	        System.out.println("语文的平均分为:"+yavg);
	        

	       //求数学的总成绩和平均分
	        System.out.println("数学的总成绩为:"+msum);
	        System.out.println("数学的平均分为:"+mavg);

	   }
}

用IDE编辑的时候,只能输入第一个学生的语文和数学成绩,到第二个就异常了,是怎么回事?


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

正在回答

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

1回答

同学你好,报错信息是数组下标越界异常,这里定义的数组应该3行2列,如:

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

不是3行1列。建议同学修改一下再试试。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 展翅的鲲鹏 提问者 #1
    谢谢,修改后正常了,但还是有个疑惑,数组下标不是从0开始吗?【1】则表示有2列才对呀,我是不是哪里理解错了?
    2019-05-22 15:40:34
  • 好帮手慕阿满 回复 提问者 展翅的鲲鹏 #2
    同学理解错了,数组下标从0开始,这是正确的。但是在定义数组时,应该是int[3][2],这是表示3行2列,int[3][1]只表示3行1列。intArray[2][1]表示的是第3行的第2个数。祝:学习愉快~
    2019-05-22 15:54:51
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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