当前位置: 代码迷 >> 综合 >> -PAT-java-5-23 币值转换 (20分)
  详细解决方案

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

热度:42   发布时间:2023-10-09 21:34:19.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");			}}}}}
}