java 读音_数的读法 (Java代码)

java 读音_数的读法 (Java代码)解题思路:将读入的数字从后往前数,每四个划为一组,数字长度不够4整除的前补0使之刚好被4整除如:1234567009,即被分成了0012,3456,7009三组其中,第一组(从左往右数)的单位是”yi”(亿),第二组的

解题思路:将读入的数字从后往前数,每四个划为一组,数字长度不够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

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 

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();

}

}

今天的文章java 读音_数的读法 (Java代码)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64501.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注