java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分相关的知识,希望对你有一定的参考价值。
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、运行效果
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));
参考技术B 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("自己写!");
参考技术C 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 表达式来计算最大最小值,平均值(这种编程方式源代码简洁)
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
20161213 输入一个班级中n个学生某一科的成绩(假设都是正整数)并计算这个班这科平均分是多少?
题目:
输入一个班级中n个学生某一科的成绩(假设都是正整数)并计算这个班这科平均分是多少? 今天的题,要求只能用我规定的四个变量来做,n表示n个学生,a表示每个学生的成绩,i用来控制循环,s表示总分,这样平均分就是s/n (保留一位小数)。这道题每一部分大家都知道是什么意思,组合起来看能不能做出来。
代码:
老师的答案:
以上是关于java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分的主要内容,如果未能解决你的问题,请参考以下文章
是关于java的一个编程题,希望大家帮帮忙啊,从键盘上输入学生的成绩,然后统计学生成绩的分布情况