关于输入数据的问题

关于输入数据的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.primary.DEMO2;
 
import java.util.ArrayList;
import java.util.Scanner;
 
public class ScoreDemo{
    public static void main(String[] args){
        //定义一个三行两列的整型二维数组intArray
int intArray[][]=new int[3][2];
 
int y=0;
int s=0;
int ave1=0;
int ave2=0;
        //从键盘输入学生成绩,要求输入顺序与效果图一致
        Scanner sc=new Scanner(System.in);
 
        for (int i = 0; i < intArray.length; i++) {
            for (int j = 0; j < intArray[i].length; j++) {
if(j%2==0){
System.out.println("请输入第"+(i+1)+"个学生的语文成绩");
    int a=sc.nextInt();
    intArray[i][j]=a;
    y+=a;
     
 }
    else{
    System.out.println("请输入第"+(i+1)+"个学生的数学成绩");
    int b=sc.nextInt();
    intArray[i][j]=b;
    s+=b;
    }
 
 
            }
        }
        //求语文的总成绩和平均分
        System.out.println("语文的总成绩为:"+y);
        ave1=(int)y/ intArray.length;
        System.out.println("语文的平均分为:"+ave1);
        //求数学的总成绩和平均分
        System.out.println("数学的总成绩为:"+s);
        ave2=(int)s/ intArray.length;
        System.out.println("数学的平均分为:"+ave2);
 
    }
}

老师这里我看同学都要加if判断,我试了不加的情况,这里显示每一个同学的成绩都输入了四遍,一共输入了12个数。但我定义的数组只有三行两列,为什么这里没有越界报错呢

正在回答

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

1回答

同学你好,由于不清楚同学描述的“不加if”的代码,无法进行测试,所以无法给出明确的错误分析。建议同学将出现问题的代码提供一下。

祝学习愉快~

  • 慕后端5032252 提问者 #1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package com.primary.DEMO2;
     
    import java.util.ArrayList;
    import java.util.Scanner;
     
    public class ScoreDemo{
        public static void main(String[] args){
            //定义一个三行两列的整型二维数组intArray
    int intArray[][]=new int[3][2];
     
    int y=0;
    int s=0;
    int ave1=0;
    int ave2=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)+"个学生的语文成绩");
        int a=sc.nextInt();
        intArray[i][j]=a;
        y+=a;
        System.out.println("请输入第"+(i+1)+"个学生的数学成绩");
        int b=sc.nextInt();
        intArray[i][j]=b;
        s+=b;
     
     
                }
            }
            //求语文的总成绩和平均分
            System.out.println("语文的总成绩为:"+y);
            ave1=(int)y/ intArray.length;
            System.out.println("语文的平均分为:"+ave1);
            //求数学的总成绩和平均分
            System.out.println("数学的总成绩为:"+s);
            ave2=(int)s/ intArray.length;
            System.out.println("数学的平均分为:"+ave2);
     
        }
    }

    老师好,这是不加"if"的

    2023-04-24 16:23:35
  • 好帮手慕小蓝 回复 提问者 慕后端5032252 #2

    同学你好,可以从程序运行的步骤来分析:

    1.i=0,j=0时,intArray[0][0]位置的值被a填充;

    2.紧接着,intArray[0][0]位置的值被b覆盖;

    3.i=0,j=1时,intArray[0][1]位置的值被a填充;

    4.紧接着,intArray[0][1]位置的值被b覆盖;

    5.i=1,j=0时,intArray[1][0]位置的值被a填充;

    6.紧接着,intArray[1][0]位置的值被b覆盖;

    7.i=1,j=1时,intArray[1][1]位置的值被a填充;

    8.紧接着,intArray[1][1]位置的值被b覆盖;

    9.i=2,j=0时,intArray[2][0]位置的值被a填充;

    10.紧接着,intArray[2][0]位置的值被b覆盖;

    11.i=2,j=1时,intArray[2][1]位置的值被a填充;

    12.紧接着,intArray[2][1]位置的值被b覆盖;

    从上面的分析可以看出,数据一直是在进行覆盖的,所以不会越界。

    祝学习愉快~

    2023-04-24 16:31:58
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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