CSDN 英雄会 一份“奇妙”的银行流水--答案不符合的原因

问题描述

题目的地址http://hero.csdn.net/Question/Details?ID=633&ExamID=628&from=4我的代码packagecom.common.entrance;//请不要使用package,这将会导致您的代码不能通过测试importjava.io.InputStream;importjava.math.BigDecimal;importjava.text.DecimalFormat;importjava.text.NumberFormat;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;importjava.util.Scanner;classData{//-1表示未初始化或者数据丢失publicstaticfloatBABNUMBER=-1;privateintid;privatefloatincome=0.00f;privatefloatexpenditure=0.00f;privatefloatbalance=0.00f;publicfloatformat(floatnumber){number=newBigDecimal(number).setScale(2,BigDecimal.ROUND_HALF_UP).floatValue();returnnumber;}publicstaticStringformatNumber(floatnumber){DecimalFormatdf;if(number==0){df=newDecimalFormat("0.00");}else{df=newDecimalFormat("#.00");}Stringnum=df.format(number);returnnum;}publicData(intid,floatincome,floatexpenditure,floatbalance){super();this.id=id;this.income=format(income);this.expenditure=format(expenditure);this.balance=format(balance);}publicData(){super();//TODOAuto-generatedconstructorstub}/***检测是否为完整数据**@return*/publicbooleancheckIntegrity(){if(income==-1||expenditure==-1||balance==-1){returnfalse;}returntrue;}publicintgetId(){returnid;}publicfloatgetIncome(){returnincome;}publicvoidsetIncome(floatincome){this.income=format(income);}publicfloatgetExpenditure(){returnexpenditure;}publicvoidsetExpenditure(floatexpenditure){this.expenditure=format(expenditure);}publicfloatgetBalance(){returnbalance;}publicvoidsetBalance(floatbalance){this.balance=format(balance);}}classHandleData{//扫描修复的次数privatestaticintrepairTime=3;//用户数据privatestaticMap<Integer,Data>dataMap;//用于存储待修复的数据privatestaticMap<Integer,Data>toBeRapairedMap=newHashMap<Integer,Data>();/***修复数据**@paramid*/privatestaticvoidrepairDataById(intid){Datadata=dataMap.get(id);if(!data.checkIntegrity()){//修复收入if(data.getIncome()==Data.BABNUMBER){if(data.getExpenditure()!=0&&data.getExpenditure()!=Data.BABNUMBER){data.setIncome(0);dataMap.put(id,data);}elseif(dataMap.get(id-1)!=null&&dataMap.get(id-1).checkIntegrity()&&data.getBalance()!=Data.BABNUMBER){floatincome=data.getBalance()+data.getExpenditure()-dataMap.get(id-1).getBalance();data.setIncome(income);dataMap.put(id,data);}elseif(dataMap.get(id-1)==null&&data.getBalance()!=Data.BABNUMBER){floatincome=data.getBalance()+data.getExpenditure();data.setIncome(income);dataMap.put(id,data);}}//修复支出if(data.getExpenditure()==Data.BABNUMBER){if(data.getIncome()!=0&&data.getIncome()!=Data.BABNUMBER){data.setExpenditure(0.00f);dataMap.put(id,data);}elseif(dataMap.get(id-1)!=null&&dataMap.get(id-1).checkIntegrity()&&data.getBalance()!=Data.BABNUMBER){floatexpenditure=data.getIncome()-data.getBalance()+dataMap.get(id-1).getBalance();data.setExpenditure(expenditure);dataMap.put(id,data);}elseif(dataMap.get(id-1)==null&&data.getBalance()!=Data.BABNUMBER){floatexpenditure=data.getIncome()-data.getBalance();data.setExpenditure(expenditure);dataMap.put(id,data);}}//修复余额if(data.getBalance()==Data.BABNUMBER){if(dataMap.get(id-1)!=null&&dataMap.get(id-1).checkIntegrity()&&data.getIncome()!=Data.BABNUMBER&&data.getExpenditure()!=Data.BABNUMBER){floatbalance=data.getIncome()-data.getExpenditure()+dataMap.get(id-1).getBalance();data.setBalance(balance);dataMap.put(id,data);}elseif(dataMap.get(id+1)!=null&&dataMap.get(id+1).checkIntegrity()){floatbalance=dataMap.get(id+1).getExpenditure()-dataMap.get(id+1).getIncome()+dataMap.get(id+1).getBalance();data.setBalance(balance);dataMap.put(id,data);}elseif(dataMap.get(id-1)==null){floatbalance=data.getIncome()-data.getExpenditure();data.setBalance(balance);dataMap.put(id,data);}}}}/***检测不完整数据并存储*/privatestaticvoidcheckIntegrityData(){Set<Integer>key=dataMap.keySet();Iterator<Integer>it=key.iterator();while(it.hasNext()){intid=it.next();Datadata=dataMap.get(id);if(!data.checkIntegrity()){toBeRapairedMap.put(id,data);}}}privatestaticvoidrepairData(){Set<Integer>rkey=toBeRapairedMap.keySet();Iterator<Integer>rit=rkey.iterator();while(rit.hasNext()){intid=rit.next();repairDataById(id);if(!dataMap.get(id).checkIntegrity()){//System.out.println("error:id="+id+"的数据无法修复!!!");}}toBeRapairedMap.clear();}/***修复数据的接口**@paramuserDataMap*@return*/publicstaticMap<Integer,Data>repair(Map<Integer,Data>userDataMap){if(userDataMap==null){returnnull;}dataMap=userDataMap;//检测不完整数据并存储checkIntegrityData();//修复数据while(toBeRapairedMap.size()>0){repairTime=repairTime-1;repairData();checkIntegrityData();if(repairTime<0){break;}}returndataMap;}publicstaticStringparseInput(InputStreaminput){Scannerscanner=newScanner(input);Stringd="";try{scanner.useDelimiter("n");//System.getProperty("line.separator")==nStringBufferbuffer=newStringBuffer();while(scanner.hasNext()){Stringnext=scanner.next();if(next.trim().equals("")||next==null){//System.out.println("---------over----------");input.close();scanner.close();break;}buffer.append(next);}d=buffer.toString().replaceAll("\?","-1");}catch(Exceptione){System.out.println(e);}returnd;}publicstaticMap<Integer,Data>parseDataStr(StringdataStr){//可以修改usedelimiter参数以读取不同分隔符分隔的内容Map<Integer,Data>dataMap=newHashMap<Integer,Data>();if(dataStr.equals("")||dataStr==null){returndataMap;}String[]lines=dataStr.split("r");for(Stringline:lines){//System.out.println(line);Datadata=null;String[]lineData=line.split(";");if(lineData.length<4){break;}intid=Integer.parseInt(lineData[0]);floatincome=Float.parseFloat(lineData[1]);floatexpenditure=Float.parseFloat(lineData[2]);floatbalance=Float.parseFloat(lineData[3]);data=newData(id,income,expenditure,balance);dataMap.put(id,data);}returndataMap;}}publicclassEntrance{privatestaticMap<Integer,Data>dataMap=newHashMap<Integer,Data>();publicstaticvoidmain(String[]args){Map<Integer,Data>dataMap=newHashMap<Integer,Data>();System.out.println("流水记录ID;收入;支出;余额");StringdataStr=HandleData.parseInput(System.in);dataMap=HandleData.parseDataStr(dataStr);dataMap=HandleData.repair(dataMap);System.out.println("流水记录ID;收入;支出;余额");StringBufferbuffer=newStringBuffer();Set<Integer>dataSet=dataMap.keySet();Iterator<Integer>it=dataSet.iterator();while(it.hasNext()){intid=it.next();Datadata=dataMap.get(id);buffer.append(id+";");buffer.append(Data.formatNumber(data.getIncome())+";");buffer.append(Data.formatNumber(data.getExpenditure())+";");buffer.append(Data.formatNumber(data.getBalance())+"n");}System.out.println(buffer.toString().replace("-1","?"));}}

问题:为什么就一直失败呢?本地测试比较少的数据没有问题呀------失败也没有失败原因的具体提示,好纠结呀!!

解决方案

解决方案二:
相关:http://bbs.csdn.net/topics/390874780?page=1

时间: 2025-01-29 07:57:03

CSDN 英雄会 一份“奇妙”的银行流水--答案不符合的原因的相关文章

java代码-关于CSDN英雄会挑战赛 java编程中的一些问题

问题描述 关于CSDN英雄会挑战赛 java编程中的一些问题 各位大神,我在挑战英雄会的题目的时候,在线下运行的没有问题,可是一提交就会提示,"挑战失败:你的程序正常编译,不过运行时发生错误,通常是代码有问题,如除数为零数组上下界溢出等" 我觉得可能是java输入数据时的问题,因为题目要求:输入多行数据,输出多行我是这样写的: Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do {

csdn 英雄会-CSDN英雄会答题疑问

问题描述 CSDN英雄会答题疑问 最近在CSDN英雄会参与答题,在本地测试没有问题,可是在CSDN在线编译通过后,提交代码之后查看成绩,被告知测试失败,我想知道英雄会答题时如何编译并测试 解决方案 同求,我也是放上去就说失败了,怎样才能成功 解决方案二: 据说,英雄会有的语言例如java,在线测试有问题http://bbs.csdn.net/topics/390724211

据说是雅虎的一份PHP面试题附答案_php技巧

从网上搜集到的,据说是雅虎的面试题. 1. Which of the following will not add john to the users array? 1. $users[] = 'john'; 2. array_add($users,'john'); //wrong 3. array_push($users,'john'); 4. $users ||= 'john'; //wrong 2. What's the difference between sort(), asort()

Palo Alto Networks:Ursnif银行木马背后的分销网络

本文讲的是Palo Alto Networks:Ursnif银行木马背后的分销网络,近日,网络安全公司Palo Alto Networks的安全专家发布了一份关于Ursnif银行木马传播架构的详细分析报告.臭名昭著的银行木马Ursnif在过去一年里一直不断地攻击日本地区,攻击方式主要表现为:通过包含恶意附件的垃圾邮件进行传播,受害者一旦打来附件就会下载并执行恶意软件程序. 目前,日本东京警察部门和网络犯罪控制中心已经向日本市民发布了恶意电子邮件攻击的警告.之后,研究人员将调查关注点放在了用于发送

罕见银行黑客大案连发 全球金融业安全性成焦点

近来,全球范围内银行黑客案件频发,已经引起相关方面对银行资产安全的重视.彭博消息称,一份最新的银行黑客文件曝光,正在迫使环球银行金融电信协会(SWIFT)在11000个成员构成的银行间网络中加强安全措施. 据该报道,英国国防网络承包商BAE Systems Plc在报告中披露,在越南先锋银行遭到攻击的恶意软件检查中,发现有另外七家金融机构的国际代码也在黑客的工作网络中出现,这七家银行都在越南先锋银行有代理账户. 据BAE报告,中国工商银行纽约分行.中国工商银行河内分行.三菱东京UFJ银行(Ban

银行加速掘金大数据 发力产业链营销

机票彩票电影票票票可买,水费电费燃气费费费可交,付款贷款转账款款款到位,"万能"支付宝正悄然改变着人们的金融消费模式. "我的年支出在广州市排名超过91.06%的人."购物达人张薇2012年的支付宝账单达2万元,而她工作刚半年.而孟女士的支付宝账单是3.3万元,"年支出在北京市排名超过94.09%的人",但她却仅购买过几百元的物品,"主要用于信用卡还款和转账汇款了."孟女士对<华夏时报>记者表示,"支付宝

银行平均业绩同比增幅超30%

中国最赚钱的银行.图据CFP 2010上市银行{半年报} 四大行上半年共赚2559.82亿元 平均每天赚约14亿元 工行净利润846.03亿元位居上市公司榜首 工行平均每天赚约4.65亿元 上市银行的半年报数据非常惹眼,一些股份制银行的业绩增长甚至高达80%.但在高增长的背后,这些银行也面临"资本充足率下降"."地方融资平台贷款风险"等隐忧. 进入8月底,2010年上市银行中报披露进入高峰期,随着浦发银行.北京银行的中报披露,所有上市银行均交出了各自的"中

上海杭州温州银行暂停消费贷南京九江逆向激进

南京银行最低可为基准利率,九江银行优质客户无需担保,平安银行账户管理费最高月薪0.59% 理财周报零售银行实验室研究员 张莉/文 "现在个人消费贷款在我行的已经暂停受理,这种情况将持续到4月份后才会有所改观."杭州银行一位负责人在接受理财周报记者采访时说. 在去年全年金融机构信贷总额差点达到史无前例的10万亿之后,今年1月份信贷额又创出1.6万亿的天量.为防止流动性过剩,央行今年连续两次提高存款准备金率,回收约6000亿元. "放款的压力的确大了好多,无论房贷车贷还是信用贷款

工商银行网上银行助手为什么不能安装

  工商银行网上银行助手安装步骤,那我们接下来再来看看一旦工商银行网上银行助手不能安装,原因是什么以及如何解决. 先登录工商银行网站(www.icbc.com.cn),点击页面左侧"个人网银登录"下方"安装"按照"方法二:第一步"下载安装个人网上银行控件.你可以单击鼠标右键选择"目标另存为"的功能,将个人网上银行控件下载到本地计算机后,用鼠标左键双击个人网上银行安全控件序:icbc_netbank_client_control