HDU 2093考试排名 JAVA 字符串处理

题目:
在这里插入图片描述
在这里插入图片描述
分析:
成绩记录,题目正确-1000+罚时,错误不记录
录入数据到ArrayList,获取数据组数
通过组数创建两个数组,然后通过成绩冒泡排序
成绩相等比较姓名

import java.util.ArrayList;
import java.util.Scanner;

public class T2093 {
	public static int f(String s,int m){
		int ans=0;
		if(s.equals("0")||s.charAt(0)=='-')return 0;
		else{
			ans-=1000;
			char c[]=s.toCharArray();
			int time=0;
			int time2=0;
			boolean flag=false;
			for(int i=0;i<c.length;i++){
				if(c[i]=='('||c[i]==')') {
					flag=true;
					continue;
				}
				if(!flag){
					time*=10;
					time+=(c[i]-'0');
				}else{
					time2*=10;
					time2+=(c[i]-'0');
				}
			}
			ans+=time;
			ans+=time2*m;
		}
		return ans;
	}
	public static void out(String name,int sum){
		System.out.print(name);
		int n=name.length();
		for(int i=n;i<10;i++){
			System.out.print(" ");
		}
		System.out.print(" ");
		int count=0;
		while(sum<0){
			sum+=1000;
			count++;
		}
		if(count>9){
			System.out.print(count);
		}else{
			System.out.print(" "+count);
		}
		System.out.print("  ");
		if(sum>99){
			System.out.print(sum);
		}else if(sum>9){
			System.out.print(" "+sum);
		}else{
			System.out.print("  "+sum);
		}
		System.out.println();
	}
	public static boolean big(String s1,String s2){
		int len=Math.min(s1.length(), s2.length());
		for(int i=0;i<len;i++){
			if(s1.charAt(i)>s2.charAt(i))
				return true;
			else if(s1.charAt(i)<s2.charAt(i))
				return false;
		}
		return (s1.length()>s2.length());
	}
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		ArrayList<Integer> list1=new ArrayList<Integer>();
		ArrayList<String> list2=new ArrayList<String>();
		while(sc.hasNext()){
			String name=sc.next();
			int sum=0;
			for(int i=0;i<n;i++){
				String s=sc.next();
				sum+=f(s,m);
			}
			list1.add(sum);
			list2.add(name);
		}
		int len=list1.size();
		int[] arr1=new int[len];
		String arr2[]=new String [len];
		for(int i=0;i<len;i++){
			arr1[i]=list1.get(i);
			arr2[i]=list2.get(i);
		}
		for(int i=0;i<len-1;i++){
			for(int j=0;j<len-i-1;j++){
				if(arr1[j]>arr1[j+1]){
					int temp=arr1[j];
					arr1[j]=arr1[j+1];
					arr1[j+1]=temp;
					String temps=arr2[j];
					arr2[j]=arr2[j+1];
					arr2[j+1]=temps;
				}else if(arr1[j]==arr1[j+1]){
					if(big(arr2[j],arr2[j+1])){
						String temps=arr2[j];
						arr2[j]=arr2[j+1];
						arr2[j+1]=temps;
					}
				}
			}
		}
		for(int i=0;i<len;i++){
			out(arr2[i],arr1[i]);
		}	
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王跃坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值