华为OJ 简单错误记录 (错误,不知道为什么,求大神指教)

import java.util.*;
class MyObject{
String name;
String hang;
int count;
public MyObject(){}
public String getName(){
return this.name;
}
public String getHang(){
return this.hang;
}
public void setHang(String hang){
this.hang=hang;
}
public int getCount(){
return this.count;
}
public void setName(String name){
this.name=name;
}
public void setCount(int count){
this.count=count;
}
}






public class Main {

public static void main(String[] args) {


Scanner sc=new Scanner(System.in);
  ArrayList<MyObject> ob=new ArrayList<MyObject>();
while(sc.hasNext()){
String line=sc.nextLine();
String[] s=line.split("\\\\");
String[] sa=s[s.length-1].split(" ");
String name=sa[0];
String hang=sa[sa.length-1];
int flag=0;
//获取到name与count以后就与原来的值进行比较,如果有相同的,就将那个的count+1,否则就新增数据.之后保留最新的8个数据,同时判断长度大于16的值保留16个字符。
for(int i=0;i<ob.size();i++){
if(ob.get(i).getName().equals(name)&&ob.get(i).getHang().equals(hang)){
MyObject ob1=new MyObject();
ob1=ob.get(i);
ob1.setCount(ob1.getCount()+1);
ob.set(i, ob1);
flag=1;
break;
}
}
//没有找到重复的
if(flag==0){
MyObject ob1=new MyObject();
ob1.setCount(1);
ob1.setHang(hang);
int lenname=name.length();



ob1.setName(name);
ob.add(ob1);
}
//排序
for(int i=0;i<ob.size();i++){
for(int j=i+1;j<ob.size();j++){
if(ob.get(i).getCount()<ob.get(j).getCount()){
MyObject obl=new MyObject();
obl.setName(ob.get(i).getName());
obl.setHang(ob.get(i).getHang());
obl.setCount(ob.get(i).getCount());
ob.set(i, ob.get(j));
ob.set(j, obl);
}
}
}
int len=ob.size();
if(len>8)
len=8;
for(int i=0;i<len;i++){
String ss=ob.get(i).getName();
if(ss.length()>16){
ss=ss.substring(ss.length()-16, ss.length());
MyObject obs=new MyObject();
obs=ob.get(i);
obs.setName(ss);
ob.set(i, obs);
}
}



}
int len=ob.size();
if(len>8)
len=8;
for(int i=0;i<len;i++){
System.out.println(ob.get(i).getName()+" "+ob.get(i).getHang()+" "+ob.get(i).getCount());
}
}

}







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值