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

本文介绍了一种使用Java编程语言修复银行流水记录中模糊金额的方法。通过遵循特定的规则来确保数据的一致性和准确性,该算法能够自动计算并填充缺失的余额值。

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

收入、支出、余额满足以下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



import java.io.*;
import java.text.DecimalFormat;
public class moneyPrint {

 /**
  * @param args
  * @throws IOException
  *
  */
 
 public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  // String[] s={"1;0;3;10","2;4;5;?","3;0;9;?","4;10;0;?",""};
  System.out.println("请输入你想输入的行数:");
  BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
  int j=Integer.parseInt(in.readLine());
   String[] s=new String[j+1];
  inputData ind=new inputData();
  ind.input(s);
  
   bankCount bc=new bankCount();
   bc.setData(s);
 }
  
 
}
class inputData
{
 public String[] input(String[] s)
 {      
   System.out.println("输入样例");
   System.out.println("流水记录ID;收入;支出;余额");
      for (int i = 0; i < s.length; i++)     
   {                      
   try           
   {              
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));            
    s[i] =in.readLine();         
   }        
   catch (IOException e)           
   {                
    e.printStackTrace();            
   }
   
   } 
      return s;
 }
}


class bankCount
{
 public void setData(String[] s)
 {
   int i=0;       
   String line="";  
   String[] txt1 = null;
   double[][] arrs=new double[s.length-1][4];
  System.out.println("输出样例:");
  System.out.println("流水记录ID;收入;支出;余额");
   while ((line=s[i])!="") {           
   txt1=line.split(";");
      if(txt1[3].equals("?"))
      {
       arrs[i][3]=arrs[i-1][3]-Double.parseDouble(txt1[2])+Double.parseDouble(txt1[1]);
       for(int j=1;j<3;j++)
       {
    arrs[i][j]=Double.parseDouble(txt1[j]);
       }
       System.out.print(i+1);
       for(int j=1;j<4;j++)
        if(j<4)
        {
         System.out.print(";");
         System.out.print(String.format("%.2f", arrs[i][j]));
           
        }
      }
     else{
      System.out.print(i+1);
      for(int j=1;j<4;j++)
      {
   arrs[i][j]=Double.parseDouble(txt1[j]);
   if(j<4)
      {
     System.out.print(";");
     System.out.print(String.format("%.2f", arrs[i][j]));
         
      }
      }
      }
      System.out.println("");
      i++;
   } 
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦里仙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值