老师帮忙看一下为什么我的语文成绩跟平均分不对

老师帮忙看一下为什么我的语文成绩跟平均分不对

public static void main(String[] args) {

/*

1、定义一个三行两列的整型二维数组intArray


         2、从键盘输入学生成绩,要求输入顺序与效果图一致。


         3、求语文的总成绩和平均分


         4、求数学的总成绩和平均分

*/

   

         int[][] intArrary=new int[3][2];

         Scanner sc=new Scanner(System.in);

         int sum1=0;

         int sum2=0;

         

         for(int i=0;i<intArrary.length;i++) {

         for(int j=0;j<intArrary[i].length;j++) {

         if(j==0) {

         System.out.println("请输入第"+(i+1)+"个学生的语文成绩");}

         else {

         System.out.println("请输入第"+(i+1)+"个学生的数学成绩");

         }

         intArrary[i][j]=sc.nextInt();

         sum1=sum1+intArrary[i][0];

         sum2=sum2+intArrary[i][1];

         

        

         } 

         }

         

         System.out.println("语文的总成绩为:"+sum1);

         System.out.println("语文的平均分为:"+sum1/intArrary.length);

         System.out.println("数学的总成绩为:"+sum2);

         System.out.println("数学的平均分为:"+sum2/intArrary.length);

         }


正在回答

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

2回答

同学你好,这里将 sum1=sum1+intArrary[i][0];与sum2=sum2+intArrary[i][1];放在循环中执行。

    比如第一次循环中输入第一个学生的语文成绩为81,sum1此时是81;

    当进行第二次循环输入第一个同学的数学成绩时,继续执行sum1=sum1+intArrary[i][0];此时sum1的值是162,在循环中将前面求和的表达式又加了一遍。

 所以最后求出的总成绩是不正确的。修改建议如下:

public static void main(String[] args) {
		/*
		 * 
		 * 1、定义一个三行两列的整型二维数组intArray
		 * 2、从键盘输入学生成绩,要求输入顺序与效果图一致。		
		 * 3、求语文的总成绩和平均分
		 * 4、求数学的总成绩和平均分 
		 */
		int[][] intArrary = new int[3][2];

		Scanner sc = new Scanner(System.in);
		int sum1 = 0;
		int sum2 = 0;
		for (int i = 0; i < intArrary.length; i++) {
			for (int j = 0; j < intArrary[i].length; j++) {
				if (j == 0) {
					System.out.println("请输入第" + (i + 1) + "个学生的语文成绩");
					intArrary[i][0] = sc.nextInt();			
					sum1 = sum1 + intArrary[i][0];				
				}
				else {
					System.out.println("请输入第" + (i + 1) + "个学生的数学成绩");
					intArrary[i][1] = sc.nextInt();					
					sum2 = sum2 + intArrary[i][1];					
				}
			}

		}

		System.out.println("语文的总成绩为:" + sum1);

		System.out.println("语文的平均分为:" + sum1 / intArrary.length);

		System.out.println("数学的总成绩为:" + sum2);

		System.out.println("数学的平均分为:" + sum2 / intArrary.length);

	}

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

  • 慕慕6315658 提问者 #1
    可是老师我sum2的总成绩是对啊也在循环体当中,那不是应该sum1跟sum2都出错吗。
    2019-10-21 20:47:18
提问者 慕慕6315658 2019-10-21 20:45:10

可是老师我sum2的总成绩是对啊也在循环体当中,那不是应该sum1跟sum2都出错吗。

  • 同学你好,1、这里数学成绩没有出错的原因是,在第一次循环中,输入数学成绩后,执行 sum2=sum2+intArrary[i][1]; 数学成绩执行了一次相加,在第二次循环中,输入语文成绩后,执行数学成绩的加法-->sum2=sum2+intArrary[i][1]; 时,此时第二个学生的数学成绩为0,以此类推,最后求得的数学的总成绩没有错。2、但是这样书写是有问题的呐,建议同学按照上面回答中的内容修改代码呐。如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2019-10-22 09:45:49
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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