关于2维数组脚标的问题 用嵌套循环给2维数组每列赋值时的逻辑问题
i问题描述:mport java.util.Scanner;
public class ArrayTest {
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.print("请输入第"+(i+1)+"个学生的语文成绩: ");
intArray[i][0]=sc.nextInt();
for(int j = 0; j<intArray[i].length-1; j++){
System.out.print("请输入第"+(i+1)+"个学生的数学成绩: ");
intArray[i][1]=sc.nextInt(); // <----为什么intArray[i][j]=sc.nextInt() 不行;
}
}
相关代码://求语文的总成绩和平均分
//求数学的总成绩和平均分
int sumL = 0;
int sumM = 0;
int AvgL = 1 ;
int AvgM = 1;
for(int i = 0; i<intArray.length; i++){
for(int j = 0; j<intArray[i].length-1; j++){
sumL = sumL+intArray[i][0];
sumM = sumM+intArray[i][1];
}
}
AvgL = sumL/intArray.length;
AvgM = sumM/intArray.length;
System.out.println("语文总成绩为: "+sumL);
System.out.println("语文平均分为: "+AvgL);
System.out.println("数学总成绩为: "+sumM);
System.out.println("数学总成绩为: "+AvgM);
}
}
请问
1. 为何用--->intArrary[i][j]sc.nextInt()导致计算有问题. 用intArray[i][1]=sc.nextInt();却ok
2. 我的给数组循环赋值的时候是否有逻辑漏洞?
25
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕小尤
2021-01-07 17:13:57
同学你好,1. for(int j = 0; j<intArray[i].length-1; j++) 此循环会进入循环一次,如下:
intArray[i].length-1等于1,则第一次循环,当j=0时,0<,符合条件,进入循环。为intArray[i][0]赋值。然后进行j++。
第二次循环,j=1,1<1不符合条件,结束循环,
综上所述,for(int j = 0; j<intArray[i].length-1; j++)只会为intArray[i][0]赋值,从而导致其他数据错误。
2. 根据同学的代码,直接为intArray[i][0]与intArray[i][1]赋值即可,则建议同学优化代码,使用一层循环,实现键盘输入与计算总成绩。修改后代码如下所示:
public static void main(String[] args) { //定义一个三行两列的整型二维数组intArray int[][] intArray=new int[3][2]; // 定义sumL、sumM变量 int sumL = 0; int sumM = 0; //从键盘输入学生成绩,要求输入顺序与效果图一致 Scanner sc=new Scanner(System.in); for(int i = 0; i<intArray.length; i++){ System.out.print("请输入第"+(i+1)+"个学生的语文成绩: "); intArray[i][0]=sc.nextInt(); System.out.print("请输入第"+(i+1)+"个学生的数学成绩: "); intArray[i][1]=sc.nextInt(); // 求语文的总成绩 sumL = sumL+intArray[i][0]; // 求数学的总成绩 sumM = sumM+intArray[i][1]; } //求语文的平均分 //求数学的平均分 int AvgL = 1 ; int AvgM = 1; AvgL = sumL/intArray.length; AvgM = sumM/intArray.length; System.out.println("语文总成绩为: "+sumL); System.out.println("语文平均分为: "+AvgL); System.out.println("数学总成绩为: "+sumM); System.out.println("数学总成绩为: "+AvgM); }
祝学习愉快!
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星