
正文
java程序代码成绩表 java成绩查询代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java语言做成绩排名表,如何实现同分同名次,最好有代码,谢谢
思路: 排序肯定还是要排java程序代码成绩表的, 按照Java成绩来进行排练. 然后排名java程序代码成绩表的时候,进行比较. 如果这一名java程序代码成绩表的成绩和上一名java程序代码成绩表的相同, 那么名次相同, 如果比上一名分数低,那么排名加一.
可以使用传统java程序代码成绩表的,集合排序,输出. 也可以使用java8新提供的Stream API进行操作
参考代码如下
import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
class Stu {// 学生类
private String name;
private double score;// 成绩
public Stu(String name, double score) {
this.name = name;
this.score = score;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//测试类
public class TestDemo {
public static void main(String[] args) {
ListStu stus = Arrays.asList(new Stu("Tom", 79.5), new Stu("Jack", 52), new Stu("Amdy", 79.5),
new Stu("Lucy", 68), new Stu("Cherry", 79.5), new Stu("Jerry", 52), new Stu("Sweet", 91),
new Stu("Solem", 65));
fun1(stus);
System.out.println("---------------分割线---------------------");
fun2(stus);
}
// 方法一:传统的方法
public static void fun1(ListStu stus) {
// 按照成绩排序
stus.sort(new ComparatorStu() {
@Override
public int compare(Stu s1, Stu s2) {
return -Double.compare(s1.getScore(), s2.getScore());
}
});
int index = 0;// 排名
double lastScore = -1;// 最近一次的分
for (int i = 0; i stus.size(); i++) {
Stu s = stus.get(i);
if (Double.compare(lastScore, s.getScore())!=0) { // 如果成绩和上一名的成绩不相同,那么排名+1
lastScore = s.getScore();
index++;
}
System.out.println("名次:" + index + "\t分数" + s.getScore() + "\t名字" + s.getName());
}
}
// 方法2: Java8开始支持的Lambada表达式配合 Stream API 来进行分组排序
public static void fun2(ListStu stus) {
ListEntryDouble, ListStu list = stus.stream().collect(Collectors.groupingBy(Stu::getScore)).entrySet()
.stream().sorted((s1, s2) - -Double.compare(s1.getKey(), s2.getKey())).collect(Collectors.toList());
int index = 1;
for (EntryDouble, ListStu entry : list) {
System.out.print("名次:" + index + "\t分数:" + entry.getKey() + "\t名字");
entry.getValue().forEach((s) - System.out.print(" " + s.getName()));
System.out.println();
index++;
}
}
}
输出结果
名次:1 分数91.0 名字Sweet
名次:2 分数79.5 名字Tom
名次:2 分数79.5 名字Amdy
名次:2 分数79.5 名字Cherry
名次:3 分数68.0 名字Lucy
名次:4 分数65.0 名字Solem
名次:5 分数52.0 名字Jack
名次:5 分数52.0 名字Jerry
名次:1 分数:91.0 名字 Sweet
名次:2 分数:79.5 名字 Tom Amdy Cherry
名次:3 分数:68.0 名字 Lucy
名次:4 分数:65.0 名字 Solem
名次:5 分数:52.0 名字 Jack Jerry
---------------分割线---------------------
名次:1 分数:91.0 名字 Sweet
名次:2 分数:79.5 名字 Tom Amdy Cherry
名次:3 分数:68.0 名字 Lucy
名次:4 分数:65.0 名字 Solem
名次:5 分数:52.0 名字 Jack Jerry
相关问答
Q1: 怎样用java编写程序实现学生成绩等级划分,输入考试成绩,程序会相应输出成绩等级?
import java.util.Scanner;\x0d\x0apublic class test {\x0d\x0apublic static void main(String[] args) {\x0d\x0aScanner x = new Scanner(System.in);\x0d\x0aSystem.out.println("请输入成绩");\x0d\x0aint a=x.nextInt(); \x0d\x0aint n=a/10; //百分制转换为等第\x0d\x0aswitch(n){\x0d\x0acase 10: //表示如果n=10,也就是一百分,输出A\x0d\x0acase 9:\x0d\x0aSystem.out.println("A");\x0d\x0abreak;\x0d\x0acase 8:\x0d\x0aSystem.out.println("B");\x0d\x0abreak;\x0d\x0acase 7:\x0d\x0aSystem.out.println("C");\x0d\x0abreak;\x0d\x0acase 6:\x0d\x0aSystem.out.println("D");\x0d\x0abreak;\x0d\x0acase 5:\x0d\x0acase 4:\x0d\x0acase 3:\x0d\x0acase 2:\x0d\x0acase 1:\x0d\x0acase 0:\x0d\x0aSystem.out.println("FAIL"); //低于六十分的输出不及格 FAIL\x0d\x0abreak;\x0d\x0adefault:System.out.println(" 请输入一个正确的成绩"); //输入的不是百分制,报错\x0d\x0a}\x0d\x0a}\x0d\x0a}
Q2: java编写一个成绩统计程序
import java.util.Scanner;
public class test {
static int s;
public static void main(String[] argv) {
int [] num=new int[20];
Scanner scanner=new Scanner(System.in);
Integer a;
int i;
for(i=1;i=20;i++){
System.out.println("请输入第"+i+"一个分数(结束请输入520嘿嘿):");
a=scanner.nextInt();
num[i-1]=a;
if(a==520){
break;
}
}
for(int m=0;mi-1;m++)
{
s=s+num[m];
}
System.out.println("总共录入了"+(i-1)+"个分数");
System.out.println("总成绩是"+s+"分");
System.out.println("平均分是"+s/(i-1)+"分");
for(Integer m=0;mnum.length-1;m++)
{ if(num[m]0num[m]!=520){
if(num[m]=90)
System.out.println(num[m]+"优秀");
else if(num[m]=80)
System.out.println(num[m]+"良好");
else if(num[m]=70)
System.out.println(num[m]+"中等");
else if(num[m]=60)
System.out.println(num[m]+"及格");
else
System.out.println(num[m]+"不及格");
}else break;
}
}
}
我的代码很简洁,采纳我呗。。。
Q3: 用java编写一个成绩等级文件,包含学号,5个大题的成绩,如下所示,要
package com.sinosoft.know;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Scanner;
/**
* 百度知道——统计学生分数
* 这里每个类均返回本类对象,方便调用方法
* @author cherry
*
*/
public class CalScores {
/* 学生姓名 */
private String stuName;
/* 学生学号 */
private String stuIdno;
/* 学生成绩 */
private float stuScore;
/* 前面5个存储学生姓名;後面5个存储学生学号 */
private String[] stuInfoArray = new String[10];
/* 存储学生成绩 */
private float[] stuScoreArray = new float[5];
private float allScore = 0.0f;//学生的总成绩
private float allAveg = 0.0f;//学生的平均成绩
/**
* 输入数据函数
*/
public CalScores inputData() {
Scanner input = new Scanner(System.in);
for(int i = 0; i 5; i++) {
System.out.print("请录入学生姓名:");
stuName = input.next();
System.out.println("请录入学生学号:");
stuIdno = input.next();
/* 注这里没有加是否为数字校验,如果在成绩处输入字符将会出异常 */
System.out.println("请录入学生java课程成绩:");
stuScore = input.nextFloat();
stuInfoArray[i] = stuName;
stuInfoArray[i+5] = stuIdno;
stuScoreArray[i] = stuScore;
}
return this;
}
/**
* 数据处理函数
*/
public CalScores dealData() {
/* 计算总成绩 */
for(float a : stuScoreArray) {
allScore += a;
}
/* 计算平均值 */
allAveg = allScore / 5;
return this;
}
/**
* 输出到文件函数
*/
public CalScores outPutData() {
try {
System.out.println("文件将被写入d盤");
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("d:\\Result.txt"), false));
writer.write("姓名\t学号\t成绩\n");
for(int i = 0; i 5; i++) {
writer.write(stuInfoArray[i]+"\t\t"+stuInfoArray[i + 5]+"\t\t"+stuScoreArray[i]+"\n");
}
writer.write("总成绩为:" + allScore);
writer.write("平均成绩为:" + allAveg);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
}
return this;
}
/**
* 主程序入口
* @param args
*/
public static void main(String[] args) {
CalScores cs = new CalScores();
cs.inputData().dealData().outPutData();
}
}
关于java程序代码成绩表和java成绩查询代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








