
正文
歌手评分系统java代码 歌手打分系统
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求JAVA评委打分代码
正好我闲着,给你写一个吧。
我写的这个评委分数是在代码里固定到数组里了,如果你需要运行时手动输入评分,可以将oldScores里的数据改成手动输入就行了(这个不用我再写了吧,如果不会再追问,再告诉你)。
你先新建一个类,将下面的main方法全部复制进去就能运行了,自己看一下吧。
/** 主方法 */
public static void main(String[] args)
{
/** 保存原始评分的数组(如果你需要运行时手动输入分数,将 oldScores中的数据改成手动输入就行了 */
double[] oldScores = {15, 77, 55, 88, 79, 98, 67, 89, 68, 88};
/** 最终将用来保存排序后的数组 */
double[] scores = new double[oldScores.length];
double temp;
/** 平均分 */
double avg = 0;
int k;
/** 将原始评分放入最终排序数组 */
for (int i = 0; i oldScores.length; i++)
{
scores[i] = oldScores[i];
}
/** 开始排序 */
for (int i = 0; i scores.length - 1; i++)
{
k = i;
for (int j = i + 1; j scores.length; j++)
{
if (scores[k] scores[j])
{
k = j;
}
}
if (i != k)
{
temp = scores[k];
scores[k] = scores[i];
scores[i] = temp;
}
}
/** 计算去掉最高分和最低分之后的和 */
double sum = 0;
/** 记录计算平均分的分数个数 */
double num = 0;
for (int i = 1; i scores.length - 1; i++)
{
num++;
sum += scores[i];
}
/** 计算平均分 */
avg = sum / num;
/** 最公平的肯定不是在scores数组两端 */
double zgp = 0;
double cha = 0;
/** 标记与平均值差值最小的分数位置 */
int flag = 0;
/** 开始寻找最公平评分 */
for (int i = 1; i scores.length - 1; i++)
{
/** 为cha赋初始值,注意比较差值要使用绝对值比较 */
if (i == 1)
{
cha = Math.abs(scores[i] - avg);
}
double cha1 = Math.abs(scores[i] - avg);
if (cha1 cha)
{
cha = cha1;
flag = i;
}
}
zgp = scores[flag];
/** 由于最不公平的分数肯定在scores数组的第一个或者是最后一个 */
double bgp = 0;
if (Math.abs(scores[0] - avg) Math.abs(scores[scores.length - 1] - avg))
{
bgp = scores[0];
}
else
{
bgp = scores[scores.length - 1];
}
/** 全部计算完成,下面开始输出结果 */
System.out.println("原始评委分数如下:");
for (int i = 0; i oldScores.length; i++)
{
System.out.print(oldScores[i] + ", ");
}
System.out.println();
System.out.println("排序后分数如下:");
for (int i = 0; i scores.length; i++)
{
System.out.print(scores[i] + ", ");
}
System.out.println();
System.out.println("去掉最高分和最低分后平均分:" + avg);
System.out.println("最公平分数:" + zgp);
System.out.println("最不公平分数:" + bgp);
}
相关问答
Q1: 用JAVA编写 “十个评委给一个歌手打分,求出打分的平均值,(去掉最高分和最低分)”怎么编写
class Test
{
public static void main(String []args)
{
int a[]={4,458,53,44,84,22,86,114,98,41};
int q=0;
for(int i=0;i10;i++)
{
for(int j=0;j10;j++)
{
int temp=0;
if(a[i]a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
break;
}
}
}
a[0]=0;
a[9]=0;
for(int x=0;x10;x++)
{
q=a[x]+q;
}
q=q/8;
System.out.println("平均分是"+q);
}
}
Q2: 一个java歌唱比赛评分应用程序,急需,明晚上10点截至
每个歌手可以看成一个对象,这样就可以建一个歌手的类,添加一些属性和get,set方法 ,主程序可以将路人的对象保存起来,评委打分可以通过循环来对每个歌手进行打分,将打好的分保存起来,进行数据处理,存到一个数组或者链表中,查找时可以通过输入编号得到对应的选手,再通过选手得到对应的分数;排序得分就更简单了,使用排序算法就可以解决,什么冒泡,快速排序都行的。。。楼主代码还得自己敲
Q3: 请高手帮忙调试java程序,谢谢。
楼主,稍微优化了一下代码,你自己调试一下。
输出结果:
编号:1 姓名:mm 最后得分:48.0 平均分:3.2 名次:1
编号:1 姓名:kk 最后得分:47.0 平均分:3.1333334 名次:2
编号:1 姓名:gg 最后得分:36.0 平均分:2.4 名次:3
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.StringTokenizer;
public class SingleDemo {
public static void main(String[] args) {
showAll(sortAll(readAll("C:\\Documents and Settings\\xxx\\桌面\\tt.txt")));
}
// 读入文件中所有歌手的信息
private static ArrayListSinger readAll(String path) {
BufferedReader reader = null;
ArrayListSinger list = new ArrayListSinger();
try {
File file = new File(path);
reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
StringTokenizer tokenizer = new StringTokenizer(line, "|**|");
int count = 1;
Singer singer = new Singer();
while (tokenizer.hasMoreTokens()) {
String tempValue = tokenizer.nextToken();
if (count == 1) singer.setId(Integer.parseInt(tempValue));
if (count == 2) singer.setName(tempValue);
if (count == 3) {
String[] tempScore = tempValue.split(",");
float[] scores = new float[15];
for (int i = 0; i tempScore.length; i++) {
scores[i] = Float.valueOf(tempScore[i]);
}
singer.setScore(scores);
}
count++;
}
list.add(singer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (reader != null) reader.close();
reader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
// 实现对所有歌手按平均分降序排序
private static ArrayListSinger sortAll(ArrayListSinger list) {
Collections.sort(list);
return list;
}
// 输出所有选手信息(包括编号、姓名、最后得分、名次)
private static void showAll(ArrayListSinger list) {
IteratorSinger it = list.iterator();
int n = 1;
while (it.hasNext()) {
Singer singer = it.next();
System.out.println("编号:" + singer.getId() + "\t姓名:" + singer.getName() + "\t最后得分:" + singer.getLastScore()
+ "\t平均分:" + singer.getAverage() + "\t名次:" + n);
n++;
}
}
}
class Singer implements ComparableSinger {
private int id;
private String name;
private float[] score;
// 求总成绩
public float getLastScore() {
float count = 0;
for (float i : score) {
count += i;
}
return count;
}
// 求平均值
public float getAverage() {
return getLastScore() / score.length;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float[] getScore() {
return score;
}
public void setScore(float[] score) {
this.score = score;
}
@Override
public int compareTo(Singer s) {
return this.getLastScore() s.getLastScore() ? -1 : this.getLastScore() == s.getLastScore() ? 0 : 1;
}
}
关于歌手评分系统java代码和歌手打分系统的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







