A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

20黑马币
要求各种情况都可以实现 如1000_0001_1010    1001_0101_1100   1010_0000_1010

最佳答案

查看完整内容

这是一道入学测试题吧 我当初写的你可以看看

7 个回复

倒序浏览
这是一道入学测试题吧   我当初写的你可以看看
  1. package com.itheima;

  2. import java.util.Scanner;

  3. /*
  4. *
  5. * */
  6. public class Test10 {
  7.         private static Scanner sc;
  8.         public static void main(String[] args) {
  9.                 sc = new Scanner(System.in);              //定义一个文本扫描器 用于接收标准输入流的数据
  10.                 String str = sc.nextLine();
  11.                
  12.                 if("".equals(str) || !str.matches("\\d+")) {
  13.                         throw new RuntimeException("字符串内容为空或含有非阿拉伯数字字符");         //若该数据为空或者含有非阿拉伯数字字符则抛出运行时异常
  14.                 }
  15.                
  16.                 System.out.println(changeNum(str).concat("圆整").replaceAll("零圆整", "圆整"));
  17.                 sc.close();
  18.         }
  19.         public static String changeNum(String str) {
  20.                
  21.                 String[] num = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};  //定义两个字符数组用于存储阿拉伯数字的汉字表现字符 和   单位表现字符
  22.                 String[] arr = {"拾","佰","仟"};
  23.                
  24.                 StringBuilder sb = new StringBuilder();
  25.                 if(str.length() < 5) {             //首先分析该数在万位以下
  26.                         for(int x = str.length()-1; x>=0; x--) {  //从个位数开始遍历
  27.                                 char ch = str.charAt(x);
  28.                                 int n = Integer.parseInt(ch+"");
  29.                                 if(n == 0 || x == str.length()-1) {     //判断该位数是否为零或者是否是个位
  30.                                         if(n == 0 && x == str.length()-1) {   //若是零且是个位   就不做任何处理
  31.                                                 ;
  32.                                         }else {
  33.                                                 sb.insert(0, num[n]);        //若是个位 但不是零     就将该数的汉字字符存储进字符串缓冲区
  34.                                         }
  35.                                 }else {
  36.                                         sb.insert(0, num[n]+arr[str.length() - x - 2]);   //若该位数不是零且不是个位   就将该数的汉字字符和单位存储进字符串缓冲区
  37.                                 }
  38.                         }
  39.                 }else if(str.length() < 9) {      //分析该数在亿位以下
  40.                         int k = str.length() - 4;
  41.                         String s1 = changeNum(str.substring(0, k));      //高位
  42.                         String s2 = changeNum(str.substring(k, str.length()));   //低位
  43.                         StringBuilder sb2 = new StringBuilder(s1);
  44.                         if(s1.endsWith("零")) {                      //若高位返回的字符串最后一个字符是零    就将零字符替换成萬字符
  45.                                 if(s1.length() != 1) {         //特殊情况   
  46.                                         sb2.setCharAt(s1.length() - 1, '萬');
  47.                                 }else {
  48.                                         ;                                                        //若高位全为零  那么不做任何处理
  49.                                 }
  50.                         }else{
  51.                                 sb2.insert(s1.length(), '萬');     //若高位返回的字符串最后一个字符不是零    就在字符串最后位置上加上萬字符
  52.                         }
  53.                         return sb2.toString() + s2;                                //最后返回字符串
  54.                 }else if(str.length() > 8) {        //再次分析该数在亿位及以上
  55.                         int k = str.length() - 8;
  56.                         String s1 = changeNum(str.substring(0, k));      //高位
  57.                         String s2 = changeNum(str.substring(k, str.length()));   //低位
  58.                         StringBuilder sb2 = new StringBuilder(s1);
  59.                         if(s1.endsWith("零")) {
  60.                                 sb2.setCharAt(s1.length() - 1, '亿');
  61.                         }else {
  62.                                 sb2.insert(s1.length(), '亿');
  63.                         }
  64.                         return sb2.toString() + s2;
  65.                 }
  66.                 return sb.toString().replaceAll("零+", "零");
  67.         }
  68. }
复制代码
回复 使用道具 举报
要求有明确的注释
回复 使用道具 举报

day0402_shu.zip

6.23 KB, 阅读权限: 100, 下载次数: 0

回复 使用道具 举报
利用split方法可以实现
回复 使用道具 举报
都是神人呀!
回复 使用道具 举报
aweilovemusic 来自手机 中级黑马 2016-4-3 18:46:00
7#
都是大神啊,我目前只想到字符数组里面的替换功能
回复 使用道具 举报
LoveGG 中级黑马 2016-4-26 00:44:58
8#
都是大神啊,厉害,我学过但是记不住代码了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马