黑马程序员技术交流社区
标题:
汉字转换为阿拉伯数字????
[打印本页]
作者:
Gaara
时间:
2013-3-6 11:22
标题:
汉字转换为阿拉伯数字????
汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九,求转换
有些想法 先定义对应关系
零对应0
一对应1
二对应2,如此类推
从左到右一个一个汉字扫描,遇到什么中文,就把什么数字写入字符串,到最后的话,如果以十结尾,则在结尾加1个0,百结尾加2个,如此类推即可
但总感觉 不太好求指教下
作者:
chuanyueing
时间:
2013-3-6 12:03
本帖最后由 朱玺 于 2013-3-6 12:07 编辑
package number_converter;
//汉字转换为阿拉伯数字
//一百三十四亿一千零二十三万六千六百零九
//最终应该转为这样:13410236609
public class MyConverter2 {
public static void main(String[] args) {
long d=convert("一百三十四亿一千零二十三万六千六百零九");
System.out.println(d);
}
public static long convert(String s){
String [] s1=s.split("亿");
long num=restore(s1[0]) *100000000L;
String [] s2=s1[1].split("万");
num=restore(s2[0]) *10000L +num;
num=num+restore(s2[1]);
return num;
}
public static int convertNumber(char c){
int num=0;
switch(c){
case '零': num= 0; break;
case '一': num= 1; break;
case '二': num= 2; break;
case '三': num= 3; break;
case '四': num= 4; break;
case '五': num= 5; break;
case '六': num= 6; break;
case '七': num= 7; break;
case '八': num= 8; break;
case '九': num= 9; break;
}
return num;
}
// 比如 一千三百五十1 还原为1351
public static int restore(String s){
char [] array=s.toCharArray();
int num=0;
for (int i=0; i<array.length-1; i++){
if (array[i] != '零' && array[i+1]=='千' ){
num=convertNumber( array[i] )*1000;
}else
if (array[i] != '零' && array[i+1]=='百' ){
num=num + convertNumber( array[i] )*100;
}else
if (array[i] != '零' && array[i+1]=='十' ){
num=num + convertNumber( array[i] )*10;
}
}
return num+convertNumber(array[array.length-1]);
}
}
复制代码
作者:
chuanyueing
时间:
2013-3-6 12:08
朱玺 发表于 2013-3-6 12:03
你看看这个方法怎么样,有什么问题可以再问我
作者:
Gaara
时间:
2013-3-6 14:47
朱玺 发表于 2013-3-6 12:08
你看看这个方法怎么样,有什么问题可以再问我
谢了 但话说我怎么没技术分。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2