老师帮看下这个程序存在哪些问题,为什么会进入死循环,谢谢!
package com.imooc.array;
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);
int sum=0,sum1=0;
int avg=0,avg1=0;
for(int i=0;i<intArray.length;i++){
for(int j=0;j<intArray[0].length;j++){
intArray[i][j]=sc.nextInt();
if(j==0){
System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
sum=sum+intArray[i][j];
}else {
System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
sum1=sum1+intArray[i][j];
}
}
}
avg=sum/intArray.length;
avg1=sum1/intArray.length;
//求语文的总成绩和平均分
System.out.println("语文的总成绩为:"+sum);
System.out.println("语文的平均分为:"+avg);
//求数学的总成绩和平均分
System.out.println("数学的总成绩为:"+sum1);
System.out.println("数学的平均分为:"+avg1);
}
}
正在回答
同学,你好!不是进入了死循环,而是需要输入数据了才能继续往下执行的。如下所示代码,sc.nextInt()需要接收数据,但是因为没有提示,所以就会误认为是死循环了。
这条语句可以移动到if和else语句后,改正后的代码如下:
代码还可以进一步进行优化,使用一重for循环就可以了。思路如下:
用一重循环,循环中语文成绩的表示intArray[i][0],数学成绩的表示intArray[i][1];循环中的代码顺序为:
1、提示输入语文成绩,给语文成绩的数组元素赋值
2、提示输入数学成绩,给数学成绩的数组元素赋值
3、求语文成绩总和
4、求数学成绩总和
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星