一道编程题

layspain21 2012-06-04 04:06:49
编写程序将一个INT数字转换成中文数字的金额,如:10000->一万元,13002->一万元三千零二元
要求:1 改数字不能大于65535
2尽量考虑性能问题。
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
coooliang 2012-06-07
  • 打赏
  • 举报
回复
记得面试题有这样的。
huage 2012-06-04
  • 打赏
  • 举报
回复
在发一次唉,有点晕

public static String getChinese(int i){
String str ="" ;
if(i<65535 && i> 0){
String [] s = {"零","一","二","三","四","五","六","七","八","九"} ;
String [] s2 ={"万","千","百","十",""} ;
String st = i+"" ;

for (int j =0 ; j <st.length() ; j++) {
int x = Integer.parseInt(st.substring(j, j+1)) ;
if(x>0){
str = str + s[x]+s2[j] ;
}else{
str = str + s[x] ;
}
}
}
str = str.replace("零零零", "零") ;
str = str.replace("零零", "零") ;
for (int j = str.length(); j >0 ; j--) {
if(str.substring(j-1, j).equals("零")){
str = str.substring(0, j-1) ;
}else{
return str+"元" ;
}

}

return str ;
}

huage 2012-06-04
  • 打赏
  • 举报
回复
忘了删零 ,悲剧
  public static String getChinese(int i){
String str ="" ;
if(i<65535 && i> 0){
String [] s = {"零","一","二","三","四","五","六","七","八","九"} ;
String [] s2 ={"万","千","百","十",""} ;
String st = i+"" ;

for (int j =0 ; j <st.length() ; j++) {
int x = Integer.parseInt(st.substring(j, j+1)) ;
if(x>0){
System.out.println(x + " " + j);
str = str + s[x]+s2[j] ;
}else{
str = str + s[x] ;
}
}
}
for (int j = str.length(); j >0 ; j--) {
if(str.substring(j-1, j).equals("零")){
str = str.substring(0, j-1) ;
}else{
return str+"元" ;
}

}

return str ;
}
huage 2012-06-04
  • 打赏
  • 举报
回复
 public static String getChinese(int i){
String str ="" ;
if(i<65535 && i> 0){
String [] s = {"零","一","二","三","四","五","六","七","八","九"} ;
String [] s2 ={"万","千","百","十",""} ;
String st = i+"" ;

for (int j =0 ; j <st.length() ; j++) {
int x = Integer.parseInt(st.substring(j, j+1)) ;
if(x>0){
System.out.println(x + " " + j);
str = str + s[x]+s2[j] ;
}else{
str = str + s[x] ;
}
}
}
str = str+"元" ;
return str ;
}

去试试吧
hotmalx 2012-06-04
  • 打赏
  • 举报
回复
public static String intToChnNumConverter(int num){
String resultNumber = null;
if(num > 100000 || num < 0){
return "";
}
HashMap chnNumbers = new HashMap();
chnNumbers.put(0, "零");
chnNumbers.put(1, "一");
chnNumbers.put(2, "二");
chnNumbers.put(3, "三");
chnNumbers.put(4, "四");
chnNumbers.put(5, "五");
chnNumbers.put(6, "六");
chnNumbers.put(7, "七");
chnNumbers.put(8, "八");
chnNumbers.put(9, "九");

HashMap unitMap = new HashMap();
unitMap.put(1, "");
unitMap.put(10, "十");
unitMap.put(100, "百");
unitMap.put(1000, "千");
unitMap.put(10000, "万");
int[] unitArray = {10000,1000, 100, 10, 1};

StringBuilder result = new StringBuilder();
int i = 0;
while(num > 0){
int n1 = num / unitArray[i];
if(n1 > 0){
result.append(chnNumbers.get(n1)).append(unitMap.get(unitArray[i]));
}
if(n1 == 0){
if(result.lastIndexOf("零") != result.length()-1){
result.append("零");
}
}
num = num % unitArray[i++];
if(num == 0){
break;
}
}
resultNumber = result.toString();
if(resultNumber.startsWith("零")){
resultNumber = resultNumber.substring(1);
}
if(resultNumber.startsWith("一十")){
resultNumber = resultNumber.substring(1);
}
return resultNumber+"元";
}
老张-AI 2012-06-04
  • 打赏
  • 举报
回复
作业帖?

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧