码迷,mamicode.com
首页 > 编程语言 > 详细

-PAT-java-5-23 币值转换 (20分)

时间:2016-05-12 15:17:12      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB


挺麻烦的一道题 

注意测试数据
0-a
1-b
200-cB   
101001000-bYabBWbQ   
100101000-bYabSWbQ   
100011000-bYabWbQ

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[]dw = new String[10];
		
		dw[1] = "";
		dw[2] = "S";
		dw[3] = "B";
		dw[4] = "Q";
		dw[5] = "W";
		dw[6] = "S";
		dw[7] = "B";
		dw[8] = "Q";
		dw[9] = "Y";
		String[]num = new String[10];
		num[0] = "a";
		num[1] = "b";
		num[2] = "c";
		num[3] = "d";
		num[4] = "e";
		num[5] = "f";
		num[6] = "g";
		num[7] = "h";
		num[8] = "i";
		num[9] = "j";
		
		String s = sc.next();
		int len = s.length();
		if(len==1){		//输入一位数  单独考虑
			System.out.println(num[s.charAt(0)-48]);
		}
		else{		
			for(int i=0 ;i<len ;i++){
				if(s.charAt(i)-48!=0){		//数位上不为0的情况
					System.out.print(num[s.charAt(i)-48]+dw[len-i]);
				}
				else if(i<len-1&&i!=len-5&&(s.charAt(i)-48==0&&s.charAt(i+1)-48!=0)){//数位上是0的情况   有多个连续的0 值输出一个
					System.out.print(num[s.charAt(i)-48]);
				}
				else if(len>5&&i==len-5&&s.charAt(i)-48==0){//万为是0的情况
					if(len==9&&s.charAt(1)-48==0&&s.charAt(2)-48==0&&s.charAt(3)-48==0){		//一亿的情况
						
					}else{
						System.out.print("W");			
					}
					
				}
			}
		}
	}
}


-PAT-java-5-23 币值转换 (20分)

标签:

原文地址:http://blog.csdn.net/qq_34594236/article/details/51362775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!