Java输入数字转化为中文读法

我也是刚开始学习java,闲着做了这么一个程序。(这个程序只是做着玩玩,各位可以适当更改)
可以把输入的数字转化为我们读出来的那种效果,基本上功能都还可以,关于“0”在不同位上的语法也写好了
例如:1101
输出为:一千一百零一
代码如下(eclipse):

package int_to_big;
import java.util.Scanner;

public class AllRight {

	public static void main(String[] args) {
		
        System.out.println("please input");
        Scanner ff = new Scanner(System.in);
		long fir = ff.nextLong();
		
		String Sfir = ""+fir;
		String outfir = "";
		int fir_len = Sfir.length();
		
		int mul = 10;
		int[] firint = new int[fir_len];
		for(int i=0;i<firint.length;i++){
			firint[i] = (int)(fir%mul);
			fir=fir/mul;
		}
		//数字及权
		String[] big =new String[]{"零","一","二","三","四","五","六","七","八","九"}; 
		String[] value = new String[]{"","十","百","千"};
		String[] mvalue = new String[]{"万","亿"};
		
		int k;
		for(int i=fir_len-1;i>=0;i--){
			k=i;
			if(i>7)//k:降数位,使例如千万以千进行下一步计算
				k=k-8;
			else if(i>3)
				k=k-4;
			//下方程序,如若当前位为0,,向下查至万,亿权位,若非全零且前一位非零如6054,输出零(上一权位之下如千,另做处理),若全零如6500,则不输出零
			if((firint[i]==0)){
				int y=0,jiz=0;
				if(i>7)
					jiz=8;
				else if(i>3)
					jiz=4;
				else
					jiz=0;
				for(int j=i;j>=jiz;j--){
					y+=firint[j];
				}
				if((y!=0)&&((firint[i+1]!=0)||(i==jiz+3)))//避免双0重复,以及千位问题
				outfir+="零";
			}
			else {
				
				outfir+=big[(int)firint[i]];
			outfir+=value[k];}
			
			if(i==4)
				outfir+=mvalue[0];
			if(i==8)
				outfir+=mvalue[1];

		}
		System.out.println(outfir);

	}

}

结果:
哈哈哈哈,我真是个天才

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值