java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分 20

 我来答
AsunaerK
2017-09-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:4274
采纳率:84%
帮助的人:616万
展开全部

1、题目描述:

/*java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分*/

分析:

根据题目可知,①需要连续输入数据,并将连续输入的数据保存,②记录输入的数据个数③需要有输入数据内容判断,如果输入-1则停止输入,执行计算。

2、代码如下


public static void main(String[] args) {

ArrayList<Float> gList=new ArrayList<>();//定义浮点型动态数组,用作记录成绩,也可以取数组长度作为人数
Scanner input =new Scanner(System.in);
float grade=0;
 for ( ;grade!=-1;  ) {//当输入-1时结束
 System.out.println("请输入学生成绩(-1结束输入):");
 grade=input.nextFloat();
 if (grade!=-1) {//避免最后一次录入-1
 gList.add(grade);
}

}
//当输入-1时停止记录数据
 
 
//求最高分
//最低分
float max=0,sum=0,aveg=0;
float min=gList.get(0);//取第一项作为最低分初始值
for (int i = 0; i < gList.size(); i++) {

if (max<gList.get(i)) {
max=gList.get(i);
}
if (min>gList.get(i)) {
min=gList.get(i);
}
sum+=gList.get(i);//求总分
}

//平均分
aveg=sum/gList.size();
System.out.println("共有 "+gList.size()+"人,"+"最高分:"+max
+",最低分:"+min+",平均分:"+aveg);

}

3、运行效果


余不二smile
2017-07-14
知道答主
回答量:22
采纳率:100%
帮助的人:8万
展开全部
首先定义一个计算总分的,计算人数的,计算最低分数的,计算最高分数的变量。再利用do{}while();循环来控制当用户输入-1时结束循环直接将结果输出。在do{}while();当用户输入第一个成绩时,我们可以将值赋值给最低分数,循环时,用户没输入一个成绩时人数自增加1,将用户输入的成绩和用来存储最低分数的值进行对比,如果输入成绩小于最低成绩,则最低分数=输入的成绩,如果最高成绩小于输入成绩,则最高成绩=输入的成绩,并将输入的成绩增加到总分中,到循环结束时平均分就等于总分/人数即可。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String score = "0";
float scroes = 0;
int num = 0;
float minscore=0;
float maxscore=0;
do{
num++;
System.out.println("请输入成绩:");
if(num==2) minscore=Float.parseFloat(score);
if(minscore>Float.parseFloat(score)) minscore=Float.parseFloat(score);
if(maxscore<Float.parseFloat(score)) maxscore=Float.parseFloat(score);
scroes+=Float.parseFloat(score);
score = sc.nextLine();
}while(Float.parseFloat(score)!=-1);
System.out.println("共计学生" + (num-1) + "人,总分为" + scroes + ",最低分数为" + minscore + ",最高分数为" + maxscore + ",平均分为" + scores/(num-1));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
YaphetxiaoT
2017-08-09
知道答主
回答量:12
采纳率:0%
帮助的人:4.6万
展开全部
public static void main(String[] args){
    double min = 0.0;    //最低分
    double max = 0.0;    //最高分
    double sum = 0.0;   //所有成绩总和
    double average = 0.0;  //平均成绩
    int amount = 0;     //学生数量
    double grade = 0.0;   //成绩
    Scanner scan = new Scanner(System.in);
    do{
    System.out.println("请输入学生的成绩:");
    grade = scan.nextDouble();
    if(grade == -1 )
      break;
    if(grade>=max)
       max = grade;
    if(grade<=min)
       min = grade;
    sum + = grade;
    amount++;
    }while(true);
    average = sum/amount;
    System.out.println("自己写!");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hardneedl
2017-09-14 · TA获得超过921个赞
知道小有建树答主
回答量:1353
采纳率:57%
帮助的人:606万
展开全部
import java.util.*;
/**
 * @author hardneedl
 */
public class ScoreInputDemo {

    interface FilteredAction <T,R> {
        /**
         * 判断是否接受
         * @param t 输入的数值
         * @return <code>true</code>表示接受; <code>false</code>表示拒绝
         */
        boolean accept(T t);

        /**
         * 干活吧
         * @param t 输入参数
         */
        void perform(T t);

        /**
         * 取计算结果
         * @return 结果
         */
        R getResult();
    }

    public static void main(String... args) {
        FilteredAction<Integer, List<Integer>> filteredAction = new FilteredAction<Integer, List<Integer>>() {
            List<Integer> scores = new ArrayList<>(50);

            public boolean accept(Integer t) {
                return t > -1 && t < 101;
            }

            public void perform(Integer t) {
                if(accept(t)){
                    scores.add(t);
                }
            }

            public List<Integer> getResult() {
                return new ArrayList<>(scores);
            }
        };

        System.out.println("请输入分数(输入-1时,表示输入结束):");
        Scanner scanner = new Scanner(System.in);

        int i = scanner.nextInt();

        while (i!=-1) {
            filteredAction.perform(i);
            i = scanner.nextInt();
        }


        List<Integer> scores = filteredAction.getResult();

        System.out.printf("人数:%d\r\n", scores.size());

        IntSummaryStatistics is = scores.stream().mapToInt(value -> value).summaryStatistics();
        System.out.printf("最高分:%d\r\n",is.getMax());
        System.out.printf("最低分:%d\r\n",is.getMin());
        System.out.printf("平均分:%f\r\n",is.getAverage());
    }
}

FilteredAction 这个类抽象了三个方面

1)录入分数的有效性判断

2)如何处置录入的分数

3)获取录入后的原始数据内容


使用java 8 的lambda 表达式来计算最大最小值,平均值(这种编程方式源代码简洁)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好好杀生
2017-08-17 · 超过30用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:29.8万
展开全部
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class T {

public static void main(String[] args) {
// 定义分数,最大值,最小值,平均分
int count = 0;
double max = 0.0;
double min = 0.0;
double avg = 0.0;

// 实例化Scanner
Scanner in = new Scanner(System.in);
// 创建数组用来储存成绩
ArrayList<Double> al = new ArrayList<Double>();
double tmp = 0;
try {
// 接收成绩
for (int i = 0;; i++) {
System.out.println("请输入第" + (i + 1) + "个学生的成绩");
if ((tmp = in.nextDouble()) != -1) {
al.add(tmp);
count = i+1;
} else
break;
}
} catch (RuntimeException e) {
e.printStackTrace();
}

// 排序
Collections.sort(al);

// 赋值
max = al.get(al.size() - 1);
min = al.get(0);
int sum = 0;
for (double a : al) {
sum += a;
}
avg = sum / count;

// 输出结果
System.out.println("总人数" + count + "\t最大值" + max + "\t最小值" + min + "\t平均分" + avg);
}
}
控制台:
请输入第1个学生的成绩
12
请输入第2个学生的成绩
18
请输入第3个学生的成绩
30
请输入第4个学生的成绩
-1
总人数3最大值30.0最小值12.0平均分20.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式