for循环不太理解为什么要加break语句才能正常执行,不加break的话程序出错。

for循环不太理解为什么要加break语句才能正常执行,不加break的话程序出错。

package com.test;

import java.util.Scanner;

public class Test5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	       int[][] intArray=new int[3][2];
	       int sum1=0,sum2=0;
	       Scanner sc=new Scanner(System.in);
	       for(int i=0;i<intArray.length;i++){
	           for(int j=0;j<intArray[i].length;j++){
	               System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
	               intArray[i][j]=sc.nextInt();
	               sum1=sum1+intArray[i][j];
	               System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
	               intArray[i][j+1]=sc.nextInt();
	               sum2=sum2+intArray[i][j+1];
	               break;
	               
	           }
	       }
	       System.out.println("语文的总成绩为:"+sum1);
	       System.out.println("数学的总成绩为:"+sum2);
	       System.out.println("语文的平均分为:"+sum1/3);
	       System.out.println("数学的平均分为:"+sum2/3);
}
}
	


正在回答 回答被采纳积分+1

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

1回答
irista23 2018-01-08 15:08:53

不加break,程序会报java.lang.ArrayIndexOutOfBoundsException错误,这个是数组越界类型错误,不加break,内层循环会执行一次后继续执行,但执行到第二列的时候因为intArray被定义成三行两列的,没有第三列所以会报数组越界。

  • 提问者 慕粉2144182527 #1
    还是不太明白,内层循环不是有定义j<intArray[i].length,就是只执行两次吗,怎么还要加break呢,就是循环定义这里有点不理解。
    2018-01-09 22:28:43
  • irista23 回复 提问者 慕粉2144182527 #2
    执行到第二列的时候,也就是j==1,intArray[i][j+1]=sc.nextInt();这个时候j+1是2,三行两列就会越界了。其实就是你内存循环只能执行一次就break,因为你内层循环里执行一次两个列就都有值了,因为你写的是intArray[i][j]=……;intArray[i][j+1]=……
    2018-01-09 23:12:23
  • 提问者 慕粉2144182527 回复 irista23 #3
    明白这个意思了,可以怎么改进呢,觉得我这种写法不太好
    2018-01-09 23:26:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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