老师帮看下这个程序存在哪些问题,为什么会进入死循环,谢谢!

老师帮看下这个程序存在哪些问题,为什么会进入死循环,谢谢!

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);
   }
}

正在回答

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

1回答

同学,你好!不是进入了死循环,而是需要输入数据了才能继续往下执行的。如下所示代码,sc.nextInt()需要接收数据,但是因为没有提示,所以就会误认为是死循环了。

http://img1.sycdn.imooc.com//climg/5d5f97e30001a7d205960200.jpg

这条语句可以移动到if和else语句后,改正后的代码如下:

http://img1.sycdn.imooc.com//climg/5d5f98440001327805890363.jpg

代码还可以进一步进行优化,使用一重for循环就可以了。思路如下:

用一重循环,循环中语文成绩的表示intArray[i][0],数学成绩的表示intArray[i][1];循环中的代码顺序为:

1、提示输入语文成绩,给语文成绩的数组元素赋值

2、提示输入数学成绩,给数学成绩的数组元素赋值

3、求语文成绩总和

4、求数学成绩总和

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

  • 程序员XY 提问者 #1
    老师你说的是这样吧: import java.util.Scanner; public class ScoreDemo{ public static void main(String[] args){ //定义一个三行两列的整型二维数组intArray int[][] intArray=new int[3][2]; //从键盘输入学生成绩,要求输入顺序与效果图一致 int sum=0,sum1=0; Scanner sc=new Scanner(System.in); for(int i=0;i<3;i++){ System.out.println("请输入第"+(i+1)+"个学生的语文成绩"); intArray[i][0]=sc.nextInt(); sum=sum+intArray[i][0]; System.out.println("请输入第"+(i+1)+"个学生的数学成绩"); intArray[i][1]=sc.nextInt(); sum1=sum1+intArray[i][1]; } //求语文的总成绩和平均分 System.out.println("语文的总成绩为:"+sum); System.out.println("语文的平均分为:"+(sum/3)); //求数学的总成绩和平均分 System.out.println("数学的总成绩为:"+sum1); System.out.println("数学的平均分为:"+(sum1/3)); } }
    2019-08-23 16:48:18
  • 程序员XY 提问者 #2
    import java.util.Scanner; public class ScoreDemo{ public static void main(String[] args){ //定义一个三行两列的整型二维数组intArray int[][] intArray=new int[3][2]; //从键盘输入学生成绩,要求输入顺序与效果图一致 int sum=0,sum1=0; Scanner sc=new Scanner(System.in); for(int i=0;i<3;i++){ System.out.println("请输入第"+(i+1)+"个学生的语文成绩"); intArray[i][0]=sc.nextInt(); sum=sum+intArray[i][0]; System.out.println("请输入第"+(i+1)+"个学生的数学成绩"); intArray[i][1]=sc.nextInt(); sum1=sum1+intArray[i][1]; } //求语文的总成绩和平均分 System.out.println("语文的总成绩为:"+sum); System.out.println("语文的平均分为:"+(sum/3)); //求数学的总成绩和平均分 System.out.println("数学的总成绩为:"+sum1); System.out.println("数学的平均分为:"+(sum1/3)); } }
    2019-08-23 16:59:08
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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