1.题目要求:
2.注意30位学生的姓名,成绩均随机,姓名我是从26位英语字母中随机取4个作为名字。
3.30位学生的学号随机,我将学号的前6位固定,后面2为随机生成,没有考虑重复。
4.再与30位随机学生中平均分最高的进行比较,判断成绩。
import java.util.Scanner;
import java.util.Random;
public class banji {
public static void main(String[] args) {
Scanner input=new Scanner( System.in);
int i,j=0;int tep=0;
double summ=0;
int zu[]=new int [4];
int zu2[]=new int [4];
Student stu[]=new Student[30];
for(i=0,j=0;i<30;i++ ) //创建对象数组
{
stu[j]=new Student();
j++;
}
for (int k = 0; k < 30; k++) {
for (j = 0; j < 4; j++) {
zu[j]=(int)Math.round(Math.random()*(100-60)+60);//产生60-100之间的随机数
}
stu[k].setScores(zu);
}
for(i=0;i<30;i++) //随机产生姓名,都是4个英文字母
{
stu[i].setStudentName(stu[i].getRandomString(4));
}
for(int p=0;p<30;p++) //对学号进行随机处理
{
char ch = (char)('0'+Math.random()*('9'-'0'+1));
char sh = (char)('0'+Math.random()*('9'-'0'+1));
stu[p].setStudentID("132011"+ch+sh); //学号前6位都相同
}
System.out.println("现在转来一名同学,请输入它的名字:");
Student xin=new Student();
xin.setStudentName(input.nextLine());
System.out.println("请输入他的学号:");
xin.setStudentID(input.nextLine());
System.out.println("请输入他的四科成绩:");
for (int k = 0; k < 4; k++) {
zu2[k]=input.nextInt();
}
xin.setScores(zu2); //传入新同学的成绩
pinjun(xin.getStudentName(),xin.getStudentID(),xin.getScores());
float maxx=jisuan(stu[0].getScores()); //找出30名同学成绩最好的一位同学
for (int k = 0; k < 30; k++) {
if(jisuan(stu[k].getScores())>maxx) {
maxx = jisuan(stu[k].getScores());
tep=k;
}
}
System.out.printf("\n"); //求出全班的平均分
pinjun(stu[tep].getStudentName(),stu[tep].getStudentID(),stu[tep].getScores());
bijiao(xin.getScores(),stu[tep].getScores());
for (int k = 0; k < 30; k++) {
summ+=jisuan(stu[k].getScores());
}
double banji=summ/30;
if(banji<jisuan(xin.getScores()))
{
System.out.println(xin.getStudentName()+"的平均成绩高于班级的平均成绩");
}
else
{
System.out.println(xin.getStudentName()+"的平均成绩低于班级的平均成绩");
}
}
public static void pinjun(String an,String bn,int a[]) //输出平均分和分数最高
{
float jun=0;
float sum=0;
int max=a[0];
for (int i = 0; i < 4; i++) {
sum+=a[i];
}
jun=sum/4;
System.out.printf("%s(%s)的平均分为%.2f\n",an,bn,jun);
for (int i = 0; i < 4; i++) {
if(a[i]>max)
{
max=a[i];
}
}
System.out.printf("%s的最高分为%d\n",an,max);
}
public static float jisuan(int a[]){ //计算平均分
float sum=0;
float jun=0;
for (int i = 0; i < 4; i++) {
sum+=a[i];
}
return sum/4;
}
public static void bijiao(int a[],int b[]){ //新同学与成绩最好的学生比较
float sum=0;float sum2=0;
float jun=0;
float jun2=0;
for (int i = 0; i < 4; i++) {
sum+=a[i];
}
jun=sum/4;
for (int j = 0; j < 4; j++) {
sum2+=b[j];
}
jun2=sum2/4;
if(jun>jun2)
{
System.out.printf("\n新同学已经是班上成绩最好的同学啦\n");
}
else
{
}
}
}
class Student { //定义学生类
private String studentID;//学生学号
private String studentName;//学生姓名
private int[] scores = new int[4];//学生成绩
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID = studentID;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int[] getScores() {
return scores;
}
public void setScores(int[] scores) {
this.scores = scores;
}
String getRandomString(int length) { //随机产生姓名
String str = "abcdefghijklmnopqrstuvwxyz";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(26);
sb.append(str.charAt(number));
}
return sb.toString();
}
}
5.运行结果: