博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一份“奇妙”的银行流水
阅读量:5283 次
发布时间:2019-06-14

本文共 3633 字,大约阅读时间需要 12 分钟。

题目详情

一份银行流水数据,因打印模糊导致部分金额不清楚。                  

收入、支出、余额满足以下3条规则:              

1、收入、支出、余额三列都是数字            

2、同一行收入和支出的值不能同时为非零值            

3、第N-1行余额(+第N行收入或-第N行支出)=第N行余额  

程序语言: java

请按照规则编写算法,修复不清楚的值

输入描述:

输入数据最多25行,每行都包含四个数据,分别是:数据编号,收入、支出、余额,模糊的数据以?表示,它们之间以;隔开。

以文件结尾。第一组数据为初始数据值,收入、支出、余额数据保留2位小数。

输出描述:

以输入的数据顺序输出修复后的数据。

答题说明

输入样例:

流水记录ID;收入;支出;余额

1;0.00;51.90;1945.45    

2;0.00;1000.00;?

输出样例:

流水记录ID;收入;支出;余额

1;0.00;51.90;1945.45

2;0.00;1000.00;945.45

############################################################################

代码修改多次,本地运行测试多组数据均没有问题,但在线测试始终出错,不知道是何原因?

**** 代码修改之后,考虑到了第一行模糊的情况,且测试多组数据如下,还是没有通过!!!:

初始账单如下:

流水记录ID;收入;支出;余额
1;10.00;?;1000.00;
2;10.02;?;?;
3;?;?;890.02;
4;?;?;?;
5;1000.00;0.00;?;
6;0.00;200.00;1900.00;
7;?;?;1780.00;
8;?;?;?;
9;?;10.00;2400.00;
10;100.00;?;?;
最终账单如下:
流水记录ID;收入;支出;余额
1;10.00;0.00;1000.00
2;10.02;0.00;1010.02
3;0.00;120.00;890.02
4;209.98;0.00;1100.00
5;1000.00;0.00;2100.00
6;0.00;200.00;1900.00
7;0.00;120.00;1780.00
8;630.00;0.00;2410.00
9;0.00;10.00;2400.00
10;100.00;0.00;2500.00

##代码采用递归思路实现,贴出代码如下##

##有更好的思路欢迎交流##

package com.study;import java.io.*; import java.math.*;import java.util.Scanner;/** *  * @author * @date 2014-08-06 *  * 一份银行流水数据,因打印模糊导致部分金额不清楚。                  收入、支出、余额满足以下3条规则:              1、收入、支出、余额三列都是数字            2、同一行收入和支出的值不能同时为非零值            3、第N-1行余额(+第N行收入或-第N行支出)=第N行余额  程序语言: java请按照规则编写算法,修复不清楚的值输入描述:输入数据最多25行,每行都包含四个数据,分别是:数据编号,收入、支出、余额,模糊的数据以?表示,它们之间以;隔开。以文件结尾。第一组数据为初始数据值,收入、支出、余额数据保留2位小数。输出描述:以输入的数据顺序输出修复后的数据。 * */@SuppressWarnings("unused")public class WaterBill {	/**	* 记录账单:编号,收入,支出,余额	*/	static BigDecimal[][] bills=new BigDecimal[25][4];	static int length=0;//账单的实际编号		/**	* 一份神奇的银行流水,计算模糊流水账单	* @throws Exception 	*/ 	@SuppressWarnings("resource")	public static void main(String[] args) throws Exception {		// TODO Auto-generated method stub				//BufferedReader bf=new BufferedReader(new FileReader("E:/java/bills.txt"));				int i=0;				//字符串形式读取账单详情		String[][] bill=new String[25][4];	    String line = null;	    System.out.println("请输入账单:(每输入一行以enter键开始下一行输入。以'EOF'结束)");	    System.out.println("ID;"+"收入;"+"支出;"+"余额");	    Scanner scn = new Scanner(System.in);	    		while (!"EOF".equals(line = scn.nextLine())) {		int j=0;		       String[] vStrs = line.split(";");		       for (String str : vStrs) {		           bill[i][j++]=str;		       }		       i++;		       length=i;		       if(length>25){		         System.out.println("提示:输入账单最多25行!");		         System.exit(0);		       }				}		/*		//字符串形式读取账单详情		BufferedReader bf=new BufferedReader(new FileReader("E:/java/bills.txt"));		String[][] bill=new String[25][4];		   String line = null;		   while ((line = bf.readLine()) != null) {		    int j=0;		       String[] vStrs = line.split(";");		       for (String str : vStrs) {		           bill[i][j++]=str;		       }		       i++;		       length=i;		       if(length>25){		         System.out.println("提示:输入账单最多25行!");		         System.exit(0);		       }		   }		   */		   //将读取的数据转换成可用于计算的BigDecimal类型,并保留两位小数		   //模糊数据用null表示		   for(int k=0;k
length){ System.out.println("模糊项太多,无法计算!!!"); System.exit(0); } //判断第index+1行是否也有模糊项,若有,先计算出来 for(int k=1;k<=3;k++){ if(bills[index+1][k]==null){ bills[index+1][k]=countBills(index+1, k); } } bills[index][indexY]=bills[index+1][3].add(bills[index+1][2]).subtract(bills[index+1][1]); } } } if(bills[index][indexY].compareTo(BigDecimal.ZERO)<0){ System.out.println("账单中不应该有负值"); System.exit(0); } //System.out.println((index+1)+","+indexY+":"+bills[index][indexY]); return bills[index][indexY]; } }

转载于:https://www.cnblogs.com/wennian/p/5036928.html

你可能感兴趣的文章
power designer简单教程
查看>>
Spring MVC静态资源处理(在applicationContex.xml文件中进行配置)
查看>>
POJ 3669 Meteor Shower【BFS】
查看>>
AOJ 0189 Convenient Location (Floyd)
查看>>
smarty模板自定义变量
查看>>
Windows下安装TensorFlow
查看>>
bootstraptable为行中的按钮添加事件
查看>>
POJ 1125 Stockbroker Grapevine 最短路 难度:0
查看>>
Topcoder 658 650 point
查看>>
HTML5新增
查看>>
第七节20181123
查看>>
第十七节20181215
查看>>
NYOJ-2 括号配对问题
查看>>
为什么static数据成员一定要在类外初始化?(转)
查看>>
IOS常用正则表达式
查看>>
判断和设置网卡的混杂模式
查看>>
js验证码
查看>>
python之OS模块详解
查看>>
解决[Xcodeproj] Unknown object version错误
查看>>
本机部署流程详解
查看>>