写一个函数,输入一个阿拉伯数字,返回对应的人民币大写汉字字符。

直接上代码

import java.util.*;
import java.io.*;

public class Exam4{
	private static char[] data = new char[]{'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
	private static char[] units = new char[]{'元','拾','佰','仟','万','拾','佰','仟','亿'};
	public static void main(String[] args){

		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数字");
		float a = sc.nextFloat();
		System.out.println(getStringByNum(a));
	}
	public static String getStringByNum(float a){
		
		StringBuilder sb = new StringBuilder("");
		String s1 = String.format("%.2f",a);
		String[] s2 = s1.split("\\.");
		String s3 = s2[0];
		String s4 = s2[1];
		int i1 = Integer.parseInt(s3);
		int i2 = Integer.parseInt(s4);
		int jiao1 = i2/10;
		int fen1 = i2-jiao1*10;
		String jiao = data[jiao1]+"角";
		String fen = data[fen1]+"分";
		sb.append(getStringBuilder(i1));
		sb.append(jiao);
		sb.append(fen);
		return sb.toString();
		
	}
	public static StringBuilder getStringBuilder(int i1){
		StringBuilder sb = new StringBuilder("");
		if(i1==0){
			sb.append("零元");
			return sb;
		}
		int count=0;
		int j=0;
		while(i1!=0){	
			int number = i1%10;
			System.out.println(number+"=======number");
			while(j!=0&&j!=1){
				if(number==0){
					char c = '零';
					if(c==sb.charAt(0)){
						break;
					}else{
						sb.insert(0,"零");
					}
				}
				break;
			}
			if(j==0&&number==0){
				sb.insert(0,"元");
				j++;
			}
			if(number!=0){
				j=j+2;
				System.out.println(count+"===count");
				sb.insert(0,units[count]);
				sb.insert(0, data[number]);
			}
			i1 /= 10;
			count++;
		}
		return sb;
	}
}

在判断中间要不要加零的地方我觉得太麻烦了,有没有大哥帮我改下代码,有地方是百度来的.忘记抄的谁的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值