控制台报错了,不知道问题出在哪里?键盘输入这一点怎么优化?

控制台报错了,不知道问题出在哪里?键盘输入这一点怎么优化?

public class ScoreDemo{

   public static void main(String[] args){

       //定义一个三行两列的整型二维数组intArray

        int[][] intArray=new int[3][2];


       //从键盘输入学生成绩,要求输入顺序与效果图一致

        System.out.println("请输入第一个学生的语文成绩:");

        Scanner a=new Scanner(System.in);

        intArray[0][0]=a.nextInt;

        

        System.out.println("请输入第一个学生的数学成绩:");

        Scanner b=new Scanner(System.in);

        intArray[0][1]=b.nextInt;

        

        System.out.println("请输入第二个学生的语文成绩:");

        Scanner c=new Scanner(System.in);

        intArray[1][0]=c.nextInt;

        

        System.out.println("请输入第二个学生的数学成绩:");

        Scanner d=new Scanner(System.in);

        intArray[1][1]=d.nextInt;

        

        System.out.println("请输入第三个学生的语文成绩:");

        Scanner e=new Scanner(System.in);

        intArray[2][0]=e.nextInt;

        

        System.out.println("请输入第三个学生的数学成绩:");

        Scanner f=new Scanner(System.in);

        intArray[2][1]=f.nextInt;

        

       //求语文的总成绩和平均分

        int sum1=intArray[0][0]+intArray[1][0]+intArray[2][0];

        int avg1=sum1/3;


       //求数学的总成绩和平均分

        int sum2=intArray[0][1]+intArray[1][1]+intArray[2][1];

        int avg2=sum2/3;

        

        System.out.println("语文总成绩为:"+sum1);

        System.out.println("语文平均成绩为:"+avg1);

        System.out.println("数学总成绩为:"+sum2);

        System.out.println("数学平均成绩为:"+avg2);

        


   }

}


正在回答 回答被采纳积分+1

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

3回答
笨蛋999 2018-04-27 12:42:15

第一,Scanner a=new Scanner(System.in);这条语句只写一遍就好了,后面所有的输入都可以写成

intArray[0][0]=a.nextInt();

intArray[0][1]=a.nextInt();

........

intintArray[2][1]=a.nextInt();都是可以的,然后nextInt方法后面要加(),为什么要加我也不知道,反正不加就报错,关于简化输入这个,你得用循环,下面是我自己写的程序,刚学没多久,写的可能有点槽糕,你就当参考一下好了

package com.imooc.array;


import java.util.Scanner;


public class ArrayDemo3 {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

String[] subject= {"语文","数学"};//如果要添加科目,在这里添加

System.out.println("请输入学生的数量:");

int num=3;//修改学生数量

int[][] intArray=new int[num][subject.length];

int[] sum=new int[subject.length];

float[] average=new float[subject.length];

for(int i=0;i<=intArray.length-1;i++) {

//外循环i控制第i+1个学生

for(int j=0;j<subject.length;j++) {//内循环控制每个学生各科成绩

   System.out.println("请输入第"+(i+1)+"个学生的"+subject[j]+"成绩");

       intArray[i][j]=sc.nextInt();//把数据存放入二维数组intArray中

}

}

for(int i=0;i<num;i++) {

for(int j=0;j<subject.length;j++) {

sum[j]+=intArray[i][j];

}

}

for(int i=0;i<subject.length;i++) {

average[i]=sum[i]/3;

System.out.print(subject[i]+"的总成绩为:"+sum[i]+'\n');

System.out.print(subject[i]+"的平均成绩为:"+average[i]+'\n');

}

}


}


  • nextInt()因为是方法,所以要加(),这个是语法规定。你的代码也可以优化一下,用一个循环就能解决问题,在循环中,把语文成绩存储到intArray[i][0]中,把数学成绩存储在intArray[i][1]中,然后循环外要定义两个变量sum1,sum2,分别在循环中进行语文和数学成绩的累加。然后在循环外求平均值。 可以尝试改一下,祝学习愉快!
    2018-04-27 13:36:18
  • 我试试看在简化一下,谢谢你的建议
    2018-04-28 11:42:28
  • 我也是刚刚学的,菜鸟一个。一起学习共同进步啊 public static void main(String[] args) { // 一个二维数组中存放了三名学生的语文和数学的成绩, //从键盘输入三名学生的成绩存储到二维数组中, //分别求语文和数学的总成绩及平均分并输出。 Scanner sc=new Scanner(System.in); String[] subject= {"语文","数学"};//在这里添加科目 System.out.println("输入学生的数量:"); int num=sc.nextInt();//输入学生的数量 int[][] intArray=new int[num][subject.length]; int[] sum=new int[subject.length]; float[] average=new float[subject.length]; float sum1=0; float sum2=0; for(int i=0;i<intArray.length;i++){ for(int j=0;j<subject.length;j++) { System.out.println("请输入第"+(i+1)+"个学生的"+(subject[j])+"成绩:"); intArray[i][j]=sc.nextInt(); } sum1=sum1+intArray[i][0]; sum2=sum2+intArray[i][1]; } System.out.println("语文的总成绩为:"+sum1); System.out.println("语文的总平均为:"+sum1/num); System.out.println("数学的总成绩为:"+sum2); System.out.println("数学的平均分为:"+sum2/num); }
    2018-05-07 16:40:58
irista23 2018-04-26 09:48:52

1、a.nextInt()是方法所以需要括号。

2、需要使用循环来实现数据的输入,如果一个班的学生有50多人,显然不能逐一输入。

慕容4168036 2018-04-26 02:20:14

用循环来输入数据:

Scanner sc=new Scanner(System.in);

for(int i=0;i<3;i++){

for(int j=0;j<2;j++){

if(j==0){

System.out.println("Input "+(i+1)+" Student Yuwen Score:");

intArray[i][j]=sc.nextInt();

}

else if(j==1){

System.out.println("Input "+(i+1)+" Student Math Score:");

intArray[i][j]=sc.nextInt();

}

}

}


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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