Java数组练习题split应用

名学生对应数学、语文、体育3门课成绩。具体功能如下

  • 1.按名字查询某位同学的成绩
  • 2.查询某个科目不及格人数,及学生名单
  • String[] a= {“A”,“B”,“C”};
  • int[][] score ={{98,68,45},{61,45,77},{24,68,88}};
import java.util.Scanner;

/*
*名学生对应数学、语文、体育3门课成绩。具体功能如下
* 1.按名字查询某位同学的成绩
* 2.查询某个科目不及格人数,及学生名单
* String[] a= {"A","B","C"};
*	int[][] score ={{98,68,45},{61,45,77},{24,68,88}};
*/
public class Exerice04 {

	public static void main(String[] args) {
		String[] a= {"A","B","C"};
		int[][] score ={{98,68,45},{61,45,77},{24,68,88}};
		Scanner scan=new Scanner(System.in);
		System.out.println("学生姓名");
		String name=scan.next();
		for (int i = 0; i < a.length; i++) {
			if(a[i].equals(name)){
				System.out.println("数学"+score[i][0]);
				System.out.println("语文"+score[i][1]);
				System.out.println("体育"+score[i][2]);
			}
		}
		System.out.println("查询的科目1.数学2.语文3.体育");
		int select=scan.nextInt();
		int count=0;
		for (int i = 0; i < a.length; i++) {
			//判断
			if (score[i][select]<60) {
				count++;
				//
				System.out.print(a[i]+"\t");
			}
		}
		System.out.println("不及格的人数:"+count);
	}

}

  • @author Administrator 7.String s = “罗霄:上机成绩=88,笔试成绩=78;” +
  •     "刘苗苗:上机成绩=68,笔试成绩=98;;" + "郝笑:上机成绩=48,笔试成绩=58;" +
    
  •     "李昊阳:上机成绩=55,笔试成绩=11;" + "雷鸣:上机成绩=44,笔试成绩=55;" s +
    
  •     "李文龙:上机成绩=22,笔试成绩=55;" + "赵璧辉:上机成绩=44,笔试成绩=66;" ;
    
  • 4.1 按上级成绩排序
    *4.2 按笔试成绩排序
    *4.3 按总分成绩排序
    *4.4 求上机成绩的平均分
    *4.5 求笔试成绩的平均分
class Stu {
	//姓名
	private String name;
	//上机成绩
	private int machine;
	//笔试成绩
	private int pen;

	public void setName(String name) {
		this.name = name;
	}

	public void setMachine(int machine) {
		this.machine = machine;
	}

	public void setPen(int pen) {
		this.pen = pen;
	}

	public String getName() {
		return name;
	}

	public int getMachine() {
		return machine;
	}

	public int getPen() {
		return pen;
	}

	@Override
	public String toString() {
		return "姓名:"+this.name+"\t 机试:"+this.machine+"\t 笔试:"+this.pen;
	}
}
//上机排序
class StuComper implements Comparator<Stu>{
	
	@Override
	public int compare(Stu o1, Stu o2) {
		int rtn =0;
		int m=o1.getMachine()-o2.getMachine();
		if(m>0){
			return rtn=1;
		}else if(m<0){
			return rtn=-1;
		}else{
				return rtn=0;
			}
		}	
}
//笔试排序
class StuComper2 implements Comparator<Stu>{
	
	public int compare(Stu o1, Stu o2) {
		int rtn=0;
		int pDiff=o1.getPen()-o2.getPen();
		if(pDiff>0){
			return rtn=1;
		}else if(pDiff<0){
			return rtn=-1;
		}else{
			return	rtn=0;
			}
	}
}
//总分
class StuComper3 implements Comparator<Stu>{
	
	public int compare(Stu o1, Stu o2) {
		int rtn=0;
		
		int pDiff=o1.getMachine()+o1.getPen()-o2.getPen()-o2.getMachine();
		if(pDiff>0){
			 rtn=1;
		}else if(pDiff<0){
			 rtn=-1;
		}else{
				rtn=0;
			}
		return rtn;
	}
}
public class Exercise04 {

	public static void main(String[] args) {
		String s= "罗霄:上机成绩=88,笔试成绩=78;" +
				    "刘苗苗:上机成绩=68,笔试成绩=98;" + "郝笑:上机成绩=48,笔试成绩=58;" +
				    "李昊阳:上机成绩=55,笔试成绩=11;" + "雷鸣:上机成绩=44,笔试成绩=55;" +
				    "李文龙:上机成绩=22,笔试成绩=55;" + "赵璧辉:上机成绩=44,笔试成绩=66;" ;
		//按;分割
		String[] r1=s.split(";");
		//设置目标数组长度
		Stu[] nameArr=new Stu[r1.length];
		//夺取姓名分割
		String[] r2=null;
		//获取成绩分割
		String[] r3=null;
		//定义成绩
		String name=null;
		String score1=null;
		//存储成绩
		int score=0;
		for (int i = 0; i < r1.length; i++) {
			//创建学生对象
			Stu stu=new Stu();
			//按:分割
			 r2=r1[i].split(":");
			//获取姓名
			name=r2[0];
			stu.setName(name);
			//剩余的按, 分割
			 r3=r2[1].split(",");		
			//获取成绩
			for (int j = 0; j < r2.length; j++) {
				//查找=位置
				int pos=r3[j].indexOf("=");
				//截取成绩
				score1=r3[j].substring((pos+1),r3[j].length());
				//存储成绩
				score=Integer.parseInt(score1);
				//判断有没有上机字样
				if(r3[j].indexOf("上机成绩")!=-1){
					//设置上机成绩
					stu.setMachine(score);
				}else{
					stu.setPen(score);
				}		
			}
			nameArr[i]=stu;		
		}
		//打印目标数组
		show(nameArr);
		
		//上机排序
		System.out.println("************按上机成绩排序***********");
		Arrays.sort(nameArr,new StuComper());
		show(nameArr);
		//笔试排序
		System.out.println("************按笔试成绩排序***********");	
		Arrays.sort(nameArr,new StuComper2());
		show(nameArr);
		System.out.println("************按总分排序***********");	
		Arrays.sort(nameArr,new StuComper3());
		show(nameArr);
		//上机平均分
		System.out.println("上机平均分"+avgM(nameArr));
		//笔试平均分
		System.out.println("笔试平均分"+avgP(nameArr));
		
	}
	public static void show(Stu[] arr){
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
	//上机平均分
	public static double avgM(Stu[] arr){
		int sum=0;
		for (int i = 0; i < arr.length; i++) {
			Stu stu=arr[i];
			sum+=stu.getMachine();
		}
		double avg=(double)sum/arr.length;
		return avg;
	}
	//笔试平均分
	public static double avgP(Stu[] arr){
		int sum=0;
		for (int i = 0; i < arr.length; i++) {
			Stu stu=arr[i];
			sum+=stu.getPen();
		}
		double avg=(double)sum/arr.length;
		return avg;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值