Kevin234


私信TA

用户名:Kevin234

访问量:18845

签 名:

手可摘星辰

等  级
排  名 866
经  验 3447
参赛次数 0
文章发表 40
年  龄 0
在职情况 学生
学  校 南京信息工程大学
专  业

  自我简介:

解题思路:

将读入的数字从后往前数,每四个划为一组,数字长度不够4整除的前补0使之刚好被4整除
如:1234567009,即被分成了0012,3456,7009三组
其中,第一组(从左往右数)的单位是"yi"(亿),第二组的单位是"wan"(万)(第三组的单位是1,可以不包含在结果里)
然后每组分开读数,指针i初始化指向左边第一个非零数字,依次往后扫描
对于每一组,都有如下情况:
①i%4 = 0时,处在"qian"(千)位,非0时,读出数字,再追加一个"qian"
②i%4 = 1时,处在"bai"(百)位,非0时,读出数字,再追加一个"bai"
③i%4 = 2时,处在"shi"(十)位,非0时,读出数字,再追加一个"shi"
④i%4 = 3时,处在个位,如果是0,不用读出来,如果非0,读出数字;最后不要忘了,再追加该组的单位(第三组可以不加)
大体思路就是这样,还有些细节部分没细说(如连续零的处理,"yi shi"和"shi"的处理等),大家可以直接看代码部分

注意事项:
1.一般情况下,连续的零只需读出一个(特殊情况下,即使有连续的零也不需要读出,如1000003000(shi yi san qian))

2.shi还是yi shi的处理

3.末尾可以有一个多余的空格
参考代码:

import java.util.Scanner;
public class T1469 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String digit[] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
		while(in.hasNext()) {
			String n = in.next();
			int cnt = n.length()%4;
			String tmp[] = {"0000","000","00","0"};
			n = tmp[cnt]+n;	//把输入的数字拼成4的整数倍长度
			String ans = "";
			int nzero = 0;	//记录连续0的个数
			for(int i =4-cnt;i<n.length();i++) {//4-cnt可定位到输入数字的第一位
				if(n.charAt(i) != '0') {
				        //遇到第一个非零数字,且有多个连续的0,且非零数字不在下一组的第一个位置,只需读出一个0
					if(nzero>0 && i%4 != 0)
						ans += "ling ";
					nzero = 0;
					if(i%4==0)	//千位
						ans += digit[n.charAt(i)-'0'] + " qian ";
					else if(i%4==1) //百位
						ans += digit[n.charAt(i)-'0'] + " bai ";
					else if(i%4==2) //十位
						ans += digit[n.charAt(i)-'0'] + " shi ";
					else    //个位
						ans += digit[n.charAt(i)-'0'] + " ";
				}
				else
						nzero++;
				if(n.length() - i == 5 && nzero < 4)//如果位于万位上且这一组的四个数字不全为0,需要加“wan”
					ans += "wan ";
				else if(n.length() - i == 9)//如果位于亿位上,需要加“yi”
					ans += "yi ";
			}
			if(ans.indexOf("yi shi") == 0)	//"yi shi"开头的话要去掉"yi "
				ans = ans.substring(3,ans.length());
			System.out.println(ans);
		}
		in.close();
	}
}


 

0.0分

17 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

厉害
2021-04-06 19:46:37
厉害
2020-02-07 18:17:12
厉害
2019-03-02 16:31:31
  • «
  • 1
  • »