作业帮我看看那里错误,平均成绩是0;

作业帮我看看那里错误,平均成绩是0;



package com.imooc.assgnmentpacksge;

import java.util.InputMismatchException;

import java.util.Scanner;

public class StudetScoreManage {

           private static float[] f = null;

/**

* 从键盘输入,初始化数学成绩存放到数组中,并对数组中的初始化数学成绩进行管理

*/

public float[] initScore() {

Scanner sc = new Scanner(System.in);

int len=0;

try {

System.out.println("请输入要保存的数学的成绩");

len=sc.nextInt();

} catch (InputMismatchException  e) {

System.out.println("输入的数据格式有误,不能有非数字!");

sc.next();

}

           float[] f=new float[len];

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

System.out.println("请输入第" + (i + 1) + "个数据:");

sc.nextFloat();

}

return f;

}


/**

* 求平均成绩 

* @return 

*/

public float average(float[]f){

float sum=0;

float average=0;

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

sum=sum+f[i];

average=sum / f.length;

}

return average;

}

/**

*   统计成绩大于85分的人数 

*/

public int count(float[] f) {

String str="";

int count=0;

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

if(i>85) {

str=str+f[i]+"";

count++;

}

}

if(count==0) {

System.out.println("成绩大于85分的人!");

}else {

System.out.println("成绩大于85分的人数为!"+count+"人");

}

    return count;

}

/**

* 提示信息

*/

public void displayMenu() {

System.out.println("********************************************");

System.out.println("                1--初始化数学成绩");

System.out.println("                2--求成绩的平均值");

System.out.println("                3--统计成绩大于85分的人");

System.out.println("                4--修改指定位置处的成绩");

System.out.println("                5--打印输出所有成绩");

System.out.println("                0--退出");

System.out.println("********************************************");

}

/**

* 修改指定位置处成绩      

*/

public void update(float[] f, int  index, float newScore) {

f[index]=newScore;

}

/**

* 打印输出所有成绩 

*/

public void displayAllScore(float[] f) {

System.out.println("成绩为:");

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

System.out.print(f[i] + "     ");

}

}  

/**

* 主方法用switch结构

*/

public static void main(String[] args) {

StudetScoreManage ssm = new  StudetScoreManage();

Scanner sc = new Scanner(System.in);

int input = 0;

int index=0;

float newScore=0;

int[] a=null;

while (true) {

ssm.displayMenu();

System.out.println("请输入对应的数字进行操作:");

try{

input = sc.nextInt();

}catch(InputMismatchException e){

System.out.println("输入的数据格式有误,不能有非数字!");

sc.next();

continue;

}

//如数据超出0-5的范围,提示错误信息并要求重新输入

if((input<0)|(input>5)) {

System.out.println("输入的数字超出范围,请重新输入!");

continue;

}

if (input == 0) {

System.out.println("退出程序!");

break;

}

switch (input) {

case 1:

//自定义数组的值

f=ssm.initScore();

break;

case 2:

//求成绩的平均值

if(f !=null) {

ssm.average(f ); ssm.average(f );

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

}else{

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

case 3:

//统计成绩大于85分的人数

if(f !=null){

ssm.average(f);

}else {

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

case 4: 

//修改指定位置的成绩

if(f !=null){

//修改前显示原有的数据

System.out.println("修改前:");

ssm.displayAllScore(f );

System.out.println();

System.out.println("请输入要修改数据的位置(从0开始):");

try{

    index=sc.nextInt();

  //判断intdex

    if(index<0 || index>=f.length) {

    System.out.println("要修改的位置错误");

    break;

    }

System.out.println("请输入新数据:");

newScore=sc.nextFloat();

}catch(InputMismatchException e){

System.out.println("输入的数据格式有误,不能有非数字!");

sc.next();

break;

}

ssm.update(f, index,newScore);

//修改后的数据

System.out.println("修改后:");

ssm.displayAllScore(f);

System.out.println();

}else{

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

case 5: 

//打印输出所有成绩

if(f!=null){

ssm.displayAllScore(f);

System.out.println();

}else{

System.out.println("还未在数组中插入数据,请重新选择操作!");

}

break;

}

}

}

    }



正在回答

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

3回答

同学你好,1. 在count()方法中建议通过数组中的数据进行判断。修改后代码如下所示:

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

2. 在主流程的case3中建议调用count()方法并输出。如下图所示:

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

冲冲冲666 2020-10-28 16:06:02

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

应该是if(f[i]>85),毕竟i 0开始一个个加

好帮手慕阿满 2020-10-17 11:36:08

同学你好,在initScore()方法中,同学没有将输入的数据赋值给数组,造成数组中的数据都是默认的0,所以平均成绩也是0。如下应该将键盘输入的数据赋值给数组。

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

  • 提问者 慕容七哥 #1
    还发现一个问题:大于85分的人数统计不了,没有数据 /** * 统计成绩大于85分的人数 */ public int count(float[] f) { String str=""; int count=0; for(int i=0;i<f.length;i++) { if(i>85) { str=str+f[i]+""; count++; } } if(count==0) { System.out.println("成绩大于85分的人!"); }else { System.out.println("成绩大于85分的人数为!"+count+"人"); } return count; }
    2020-10-18 18:09:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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