//这里面主要是由于银联的手机支付用到了一个付款的转换方式问题,当调用支付宝付款的时候,比如一分钱格式就是我们普通用的格式:0.01,而银联确要把格式转化为000000000001(银联要求是12位)这种格式的,最后一位是分,然后向前依次是角,元,十元,百元,相信不用我说,你已经懂了吧。所以这里就需要一个转换,为了应对像1000,1000.00,1000.0这种传过来的格式的数据,特做一下转换,然后传给银联进行支付。

package com.abin.lee.collection.inner;

public class ConsumeFinance {

public static enum Currency{

CHINARMB("chinarmb"),DOLLAR("dollar"),HK("hk");

private Currency(String textVal){

this.textVal=textVal;

}

private String textVal;

public String toString(){

return textVal;

}

}

public static String ConsumeProcess(String money,Currency currency){

System.out.println("currentcy="+currency);

String flag=null;

if(currency.equals(Currency.CHINARMB)){

ConsumeFinance.ChinaProcess chinaProcess=new ConsumeFinance.ChinaProcess();

flag=chinaProcess.chinaChange(money, currency);

}

return flag;

}

public static String ConsumeProcessReturn(String money,Currency currency){

System.out.println("currentcy="+currency);

String flag=null;

if(currency.equals(Currency.CHINARMB)){

ConsumeFinance.ChinaReturn chinaReturn=new ConsumeFinance.ChinaReturn();

flag=chinaReturn.chinaReChange(money, currency);

}

return flag;

}

public static class ChinaProcess{

private static String status=null;

public static String chinaChange(String money,Currency currency){

int point=money.lastIndexOf(".");

if(point==-1){

StringBuffer stb=new StringBuffer();

int len=money.length();

int lon=10-len;

for(int i=0;i

stb.append("0");

}

stb.append(money);

stb.append("00");

status=stb.toString().intern();

}

if(point>0){

int len=money.indexOf(".");

int chn=money.length()-len-1;

switch(chn){

//先判断money格式为100.0这种格式的,小数点后面有一位小数点的情况

case  1:

StringBuffer stb=new StringBuffer(money);

stb.deleteCharAt(len);

int lend=stb.length();

StringBuffer sb=new StringBuffer();

for(int i=0;i<12-lend;i++){

sb.append("0");

}

sb.append(stb.toString());

status=sb.toString().intern();

//先判断money格式为100.01这种格式的,小数点后面有两位小数点的情况

case 2:

money=money.replace(".", "");

int lende=money.length();

String connect="";

for(int i=0;i<12-lende;i++){

connect+="0";

}

status=connect+money;

}

}

return status;

}

}

//把000000001001转化为10.01这种格式

public static class ChinaReturn{

private static String status=null;

public static String chinaReChange(String money,Currency currency){

int change=money.length();

int num=0;

for(int i=0;i

int value=Integer.valueOf(String.valueOf(money.charAt(i)));

if(value>0){

num=i;

break;

}

}

money=money.substring(num);

if(num==10){

status="0."+money;

}

if(num==11){

status="0.0"+money;

}

if(num<10){

System.out.println(money.length());

StringBuffer stb=new StringBuffer(money);

stb.insert(money.length()-2, ".");

status=stb.toString().intern();

}

return status;

}

}

public static void main(String[] args) {

Currency currency=Currency.CHINARMB;

String money="000000001001";

String result=ConsumeProcessReturn(money, currency);

//String result=ConsumeProcess(money, currency);

System.out.println("result="+result);

}

}

java 枚举 静态_Java 静态内部类和枚举(银联支付)相关推荐

  1. java 7种枚举类型_Java中的枚举类型

    枚举类比较用 == 还是 equals,有啥区别? java 枚举值比较用 == 和 equals 方法没啥区别,两个随便用都是一样的效果.因为枚举 Enum 类的 equals 方法默认实现就是通过 ...

  2. java中的枚举类_java中的枚举类型

    java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...

  3. java 枚举迭代_Java中的枚举和迭代器之间的区别

    java 枚举迭代 Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs f ...

  4. java如何创建枚举类型_Java如何创建枚举类型?

    枚举是命名常量的列表.每种最常用的编程语言都支持此功能.但是在Java中,从5.0版开始正式支持它.在Java编程语言中,枚举定义了一个类类型.因为枚举是一个类,所以它可以具有构造函数,方法和实例变量 ...

  5. java 动态更新_java动态更新枚举类

    工作中遇到需要对枚举类的值进行动态更新 手动改不现实也不方便 现记录下来方便以后学习使用 1.在工程utils包中添加动态更新枚举类得工具类(根据自己得项目,放到指定位置调用就可以) 2.一开始陷入了 ...

  6. java 枚举常量_java中的枚举类和常量类区别在哪儿?

    假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过.我们在程序里是否可以直接这么写: if(state==1){//1代表未操作 //操作 }else{ //...... } 将 ...

  7. java synchronized静态_Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  8. java 内存 静态_java中内存分配以及static的用法(转)

    JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢 ...

  9. java 内存 静态_Java内存的 静态方法和实例方法的区别及使用场景

    注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1.(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区 2.非静态变量,new出来的对象存放在堆内存,所有局部变 ...

最新文章

  1. 序列化以及反序列化二叉树
  2. 如何在Java中使用QRGen创建QRCode
  3. Linux Basics command
  4. Mysql之数据库锁(表锁和行锁)详解
  5. C语言和C++中Struct区别
  6. Ubuntu服务器修复,ubuntu – 服务器攻击,如何修复它
  7. 诺基亚n8系统更新服务器模式,新年新版本 诺基亚N8最新固件PR1.1亮相
  8. CCF推荐期刊会议(A类)
  9. python excel 填充颜色_pandas to_excel 添加颜色操作
  10. 使用PowerShell管理Exchange Server 2016
  11. 信用评分模型详解(下)之 信用评分系统搭建
  12. Java大作业——手把手教你写俄罗斯方块
  13. 为方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息......
  14. 时间片轮询+状态机实现裸机多任务
  15. 软件测评师之申请补贴(六)
  16. 福布斯08中国名人榜揭晓 “许三多”排名38
  17. sed全文字符串替换
  18. 光通量与辐射通量之间的换算
  19. 期望值、方差、协方差、相关系数,numpy 计算均值、方差、协方差,相关系数
  20. 【android】解决android SDK 模拟器 运行缓慢

热门文章

  1. MODIS数据批量裁剪并合成月尺度数据:以MOD13A1为例
  2. 约瑟夫环问题(用数学方法推出计算公式)
  3. mysql实现postgres中pg_size_pretty函数
  4. 线上事故的善后——事故通告
  5. 卉原中学2021年高考成绩查询,卉原中学2021年宿舍条件
  6. 小米手机、华为手机、一加手机、小米手环NFC刷门禁卡教程!
  7. error日志显示不全的问题,-XX:-OmitStackTraceInFastThrow
  8. 千篇一律的Python爬虫,大神精心总结的爬虫套路!
  9. 对接天猫接口之获取宝贝主图和购买宝贝对应的SKU图片(Java实现)
  10. 经典论文翻译--Minimum Snap Trajectory Generation and Control for Quadrotors