老师请问这两段代码第20行运行步骤有什么区别?为什么会导致结果不同?

来源:1-8 编程练习

啦啦啦皮皮卡丘

2022-07-08 09:54:26

//代码1:输出结果比正确值大很多
import java.util.Scanner;
public class ScoreDemo{
   public static void main(String[] args){
       //定义一个三行两列的整型二维数组intArray
    int[][]intArray=new int[3][2];

       //从键盘输入学生成绩,要求输入顺序与效果图一致
    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();
    }
       //求语文的总成绩和平均分
    int sumyy=0,aveyy=0;
    int sumsx=0,avesx=0;
    for(int i=0;i<intArray.length;i++){
        for(int j=0;j<intArray.length-1;j++){
            sumyy=sumyy+intArray[i][0];
            sumsx=sumsx+intArray[i][1];
        }
    }
    aveyy=sumyy/intArray.length;
    avesx=sumsx/intArray.length;
    System.out.println("语文的总成绩为:"+sumyy);
    System.out.println("数学的总成绩为:"+sumsx);
    System.out.println("语文的平均分为:"+aveyy);
    System.out.println("数学的平均分为:"+avesx);
   }
}
//代码2,结果正确
import java.util.Scanner;
public class ScoreDemo{
   public static void main(String[] args){
       //定义一个三行两列的整型二维数组intArray
    int[][]intArray=new int[3][2];

       //从键盘输入学生成绩,要求输入顺序与效果图一致
    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();
    }
       //求语文的总成绩和平均分
    int sumyy=0,aveyy=0;
    int sumsx=0,avesx=0;
    for(int i=0;i<intArray.length-1;i++){
        for(int j=0;j<intArray[i].length-1;j++){
            sumyy=sumyy+intArray[i][0];
            sumsx=sumsx+intArray[i][1];
        }
    }
    aveyy=sumyy/intArray.length;
    avesx=sumsx/intArray.length;
    System.out.println("语文的总成绩为:"+sumyy);
    System.out.println("数学的总成绩为:"+sumsx);
    System.out.println("语文的平均分为:"+aveyy);
    System.out.println("数学的平均分为:"+avesx);
   }
}


写回答

1回答

好帮手慕小黑

2022-07-08

同学你好,同学的问题如下所示:

(1)在for循环语句中的条件表达式中,条件表达式不应该有-1的操作,数组中的下标是0到数组的长度(不包括数组的长度),所以不应该有-1的操作。

(2)在二维数组中同学已经将第二个下标固定书写成0和1,所以没必要书写第二层for循环,遍历数组,在代码1中只需要将第二层循环删掉,就可以使运行结果和题目要求一致。在代码1中,第二层循环体将每个数据重复相加两次,显然是不正确的。

(3)同学代码2应该删掉19行条件表达式的-1操作,然后删掉第二层循环体,就可以使程序运行结果和题目要求一致。

祝学习愉快!

1

0 学习 · 16556 问题

查看课程