java 实验七 之 阿拉伯整数转换为中文大写数字(注意读法)

import java.util.*;
import java.util.Scanner;
public class Lab7 { 
	LinkedList Stack=new LinkedList();
	private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; 
 	private static final String[] NUM = {"十", "百", "千", "万", "十万", "百万", "千万", "亿"};
 	/*压入栈*/
 	private int Len;
 	public void push(Object o){
 		Len++;
 		Stack.addFirst(o);
 	}
	/*弹出栈*/
 	public Object pop(){
 		Len--;
 		return Stack.removeFirst(); 
 	}

	/*检查栈是否为空*/
 	public boolean empty(){  
 		return Stack.isEmpty(); 
 	} 

 	public static void main(String[] args){ 
 		Lab7 ms=new Lab7();
 		Scanner sc = new Scanner(System.in);
 		
 		int number = sc.nextInt();
 		int temp, up_temp;
 		up_temp = number%10;
 		temp = number%10;
 		if(temp != 0)
 			ms.push(NUMBERS[temp]);
 		else
 			ms.Len++;
 		for( number=number/10; number!=0 ;up_temp = temp,number=number/10){
 			temp = number%10;
 			if(0 == temp ){
 				if(0 != up_temp){
 					ms.push(NUMBERS[0]);
 				}else{
 					ms.Len++;
 				}
 			}else{
 				ms.push(NUM[ms.Len-1]);
				ms.Len--;
 				ms.push(NUMBERS[temp]);
 			}
 			
 		}
 		if(ms.empty()){
 			System.out.print( NUMBERS[0] );
 		}else{
			while( !ms.empty() ){
				System.out.print(ms.pop());
			}
 		}
 		System.out.println();
 	}
}

/*
 *0
 *5
 *10
 *15
 *100
 *105
 *110
 *155
 *1000
 *1001
 *1010
 *1100
 *1101
 *
 **/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值