黑马程序员技术交流社区

标题: 键盘输入123,打印出一二三(正则表达式) [打印本页]

作者: lpf870826    时间: 2015-1-2 09:38
标题: 键盘输入123,打印出一二三(正则表达式)
import java.util.Scanner;



/**  2、 从键盘接受一个数字,列出该数字的中文表示格式,
*   例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
*         
*/
public class Test2 {
        public static void main(String[] args) {
                String num = "";
                boolean f = true;
                Scanner input = new Scanner(System.in);
                do {
                        System.out.print("输入数字: ");
                        num = input.next();
                        /*"[1-9]\\d*" 为正则表达式,判断输入字符串是不是全是由数字组成的
                        *如是,转换成int类型,调用zhuanhuan()方法。
                        *[1-9]表示输入字符第一个必须为1-9中间的数,\\d*表示0到9之间的数出现0次或多次。*/
                        f = num.matches("[1-9]\\d*");
                        if(f) {
                                int shuzi = Integer.parseInt(num);
                                zhuanhuan(shuzi);
                        }
                        else {
                                System.out.println("输入错误,重新输入数字: ");
                        }
                       
                }        while(!f);                //!f为true返回do;为false结束循环。                                                
        }       
       
        public static void zhuanhuan(int num) {
                String[] chainNum = {"零","一","二","三","四","五","六","七","八","九"};
               
                StringBuilder fan = new StringBuilder();
                while(num > 0) {
                        int i = num % 10;
                        int j = num / 10;
                        num = j;
                        /* append()方法是将char 数组参数的字符串表示形式追加到此序列。返回为StringBuilder
                        * 类型所以把fan定义成一个新的StringBuilder对象。*/
                        fan.append(chainNum[i]);
                }
                //将此字符序列用其反转形式取代。
                fan.reverse();
                System.out.println(fan);
               
        }
       
       
}


作者: 菜鸟一号    时间: 2015-1-2 09:53
不错,但这个while(!f)这个没必要用这个做退出循环的做条件吧!
作者: 阿丹435    时间: 2015-1-2 10:36
正则表达式好难
作者: bjuth    时间: 2015-1-2 11:18
好像和那个 转RMB大写中文 的差不多,那个最后连接成一个字符串时要replaceAll好多,到现在我也没调出一个能完美说人话的
作者: lpf870826    时间: 2015-1-2 11:35
bjuth 发表于 2015-1-2 11:18
好像和那个 转RMB大写中文 的差不多,那个最后连接成一个字符串时要replaceAll好多,到现在我也没调出一个 ...

那个程序,我也看过,确实很麻烦,A4纸,写了满满两页。
作者: Piaoyu    时间: 2015-1-2 11:41
正则不太懂,学习
作者: gao896827735    时间: 2015-1-2 11:59
在哪学正则啊  没找到视频
作者: bluebloodant    时间: 2015-1-2 12:03
gao896827735 发表于 2015-1-2 11:59
在哪学正则啊  没找到视频

毕老师课程最后一节就是啊
作者: 吴海松    时间: 2015-1-2 14:33
写的还行
作者: 陈思伟    时间: 2015-1-2 17:09
还不懂 学习
作者: 赵越海    时间: 2015-1-2 17:52
本帖最后由 赵越海 于 2016-7-8 17:23 编辑

         .




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2