java程序求助

lonlon29 2015-07-26 05:52:39
输入一个自然数(最多12位)
输出 :读出这个自然数
输入了: 123456789
目标输出:一亿两千三百四十五万六千七百八十九

就是这样的,各位大神这个该怎么写,谢谢了
...全文
117 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonlon29 2015-07-26
  • 打赏
  • 举报
回复
引用 1 楼 qq_30117575 的回复:
你是要把他拆开舒服每位上的值还是输出大写
就是输入数字不超过12位,最终输出中文大写,谢谢
飏飏一蝶 2015-07-26
  • 打赏
  • 举报
回复

import java.util.HashMap;
import java.util.Map;

public class TrasIntToStr {
   
	//字符串特殊处理,不及十二位的高位用0补齐
	static StringBuffer strs = new StringBuffer("020101001010");
   
	public static void main(String[] args) {
    	
		System.out.println(Utils.convertForCH(strs));
		
	}
}

   class Utils{
	
	   private static Map<Character, String> map = new HashMap<Character, String>();
	  
	   static{
		  map.put('1', "一");
		  map.put('2', "二");
		  map.put('3', "三");
		  map.put('4', "四");
		  map.put('5', "五");
		  map.put('6', "六");
		  map.put('7', "七");
		  map.put('8', "八");
		  map.put('9', "九");
		  map.put('0', "零");
	  }
	   
	   public static String convertCharToCn(Character ch){
		   if(ch == null) return "";
		   return map.get(ch);
	   }
	   
	  //四个及以下字符转换
	   public static String convert4ChString(String str){
		  if (str == null) {
			return "";
		}
	
		StringBuffer stringBuffer = new StringBuffer();
		String string1 = convertCharToCn(str.charAt(3));
		String string2 = convertCharToCn(str.charAt(2));
		String string3 = convertCharToCn(str.charAt(1));
		String string4 = convertCharToCn(str.charAt(0));
		  
		boolean needsZero = false;
		  if (!string1.equals("零")) {
			stringBuffer.append(string1).append("千");
			needsZero = true;
		}
		   else if(string2.equals("零") && string3.equals("零") && string4.equals("零")) {
			   stringBuffer.append("零");
		}
		  if (!string2.equals("零")) {
				stringBuffer.append(string2).append("百");
				needsZero = true;
			}
		     else if(needsZero && (!string3.equals("零") || !string4.equals("零"))){
				stringBuffer.append("零");
				needsZero = false;
			}
		  if (!string3.equals("零")) {
				stringBuffer.append(string3).append("十");
				needsZero = true;
			}
		    else if(needsZero && !string4.equals("零")){
				stringBuffer.append("零");}
		  if (!string4.equals("零")) {
				stringBuffer.append(string4);
			}
		  return stringBuffer.toString(); 
	   }
	   
	   public static String convertForCH(StringBuffer stringBuffer){
	   //字符串特殊处理,不及十二位的高位用0补齐
		StringBuffer strs = stringBuffer;
	    String string = strs.reverse().toString();
	    	String string3 = "";
	    	String string2 = "";
	    	String string1 = "";
	    	StringBuffer result = new StringBuffer();
	    	
	        string1 = Utils.convert4ChString(string.substring(0, 4));
	    	string2 = Utils.convert4ChString(string.substring(4, 8));
	    	string3 = Utils.convert4ChString(string.substring(8, 12));
	    	  if (!string3.equals("零")) {
					result.append(string3).append("亿");
				}
	          if (!string2.equals("零")) {
	    			result.append(string2).append("万");
	    		}
	    	  if (!string1.equals("零")) {
	    			result.append(string1);
	    		}
	        return result.toString();
	   }
   }
 
输出:二百零一亿一百万一千零一十 零的处理有点麻烦,其他还好
qq_30117575 2015-07-26
  • 打赏
  • 举报
回复
你是要把他拆开舒服每位上的值还是输出大写

50,338

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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