黑马程序员技术交流社区

标题: 从键盘接受一个数字,列出该数字的中文表示格式,例如... [打印本页]

作者: 一顿一只牛    时间: 2014-8-16 21:32
标题: 从键盘接受一个数字,列出该数字的中文表示格式,例如...
本帖最后由 一顿一只牛 于 2014-8-16 22:20 编辑

package com.itheima;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


/*
* 3、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
*
*  1,接收一个键盘录入的数字
*   2,将这个数字装换成中文标示格式输出。
*           定义一个数字转换成中文格式的函数。
*   
* */

public class Text3 {
        
        public static void main(String[] args) throws IOException{
                System.out.println("请输入一个数字:");
                 //键盘录入
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                        String line = null;
                        while((line=bufr.readLine())!=null){
                                if("over".equals(line))
                                        break;               
                                System.out.println(toChinese(bufr.readLine()));
                        }
                        bufr.close();
        }
        //定义一个函数,把数字转换成中文格式。
        public static String toChinese(String str) {
            String digits = "零一二三四五六七八九";
            StringBuilder buf = new StringBuilder(str.length());
            for (int i = 0; i < str.length(); ++i) {
                buf.append(digits.charAt(str.charAt(i) - '0'));
            }
            return buf.toString();
        }        
}
为什么我第一次输入数字的时候总是不能转换,要第二次才行,求大神解惑啊。
作者: a6511631    时间: 2014-8-16 21:36
我在做基础测试的时候做过这道题
作者: a6511631    时间: 2014-8-16 21:41
System.out.println(toChinese(bufr.readLine()));    这里给toChinese方法传参传个line你看怎么样?
作者: 一顿一只牛    时间: 2014-8-16 21:44
a6511631 发表于 2014-8-16 21:41
System.out.println(toChinese(bufr.readLine()));    这里给toChinese方法传参传个line你看怎么样? ...

大神呐,一下子ok了。。。
   然后我们要是输入的不是数字,我们该怎么判断啊,这个就真不会啊
作者: a6511631    时间: 2014-8-16 21:52
  1. public static boolean isInteger(String value) {
  2.   try {
  3.    Integer.parseInt(value);
  4.    return true;
  5.   } catch (NumberFormatException e) {
  6.    return false;
  7.   }
复制代码

作者: 玥夜    时间: 2014-8-16 22:03
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;


  4. /*
  5. * 3、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  6. *
  7. *  1,接收一个键盘录入的数字
  8. *   2,将这个数字装换成中文标示格式输出。
  9. *           定义一个数字转换成中文格式的函数。
  10. *   
  11. * */

  12. public class Text3 {
  13.          
  14.      public static void main(String[] args) throws IOException
  15.      {
  16.          System.out.println("请输入一个数字:");
  17.               //键盘录入
  18.          BufferedReader bufr= null;
  19.          boolean b= false;
  20.         q: while(true)
  21.          {
  22.                
  23.            bufr = new BufferedReader(new InputStreamReader(System.in));
  24.              String line = null;
  25.              while((line=bufr.readLine())!=null)
  26.              {
  27.                  if("over".equals(line))
  28.                      break q;
  29.                  
  30.                  char[] ch=line.toCharArray();
  31.                  for(int x=0; x<ch.length;x++)
  32.                  {
  33.                          if(ch[x]>='0'&& ch[x]<='9')
  34.                          {
  35.                                 b= true;
  36.                          }
  37.                          else
  38.                          {
  39.                                 System.out.println("请重新输入一个=====数字:");
  40.                                 continue q;
  41.                          }
  42.                  }
  43.                  if(b)
  44.                          System.out.println(toChinese(line));
  45. //                 System.out.println(toChinese(bufr.readLine()));
  46.                  ;
  47.              }
  48.          }
  49.         bufr.close();
  50.      }
  51.      //定义一个函数,把数字转换成中文格式。
  52.     public static String toChinese(String str)
  53.     {
  54.          String digits = "零一二三四五六七八九";
  55.          StringBuilder buf = new StringBuilder(str.length());
  56.          for (int i = 0; i < str.length(); ++i)
  57.          {
  58.              buf.append(digits.charAt(str.charAt(i) - '0'));
  59.          }
  60.          return buf.toString();
  61.      }        
  62. }
复制代码

作者: 一顿一只牛    时间: 2014-8-16 22:14
a6511631 发表于 2014-8-16 21:52

:lol 德玛西亚万岁
作者: 一顿一只牛    时间: 2014-8-16 22:19
玥夜 发表于 2014-8-16 22:03

i谢谢大神、
作者: 象牙    时间: 2014-8-16 23:26
测试了一下..........
作者: huanglyhf    时间: 2014-8-17 16:24
我基础测试有这题
作者: 臭豆腐_w    时间: 2014-8-17 17:13
我在基础自测的时候遇到了这个题,用查表法做的
作者: 13453150836    时间: 2015-11-1 23:05
大神,好威武.
作者: 542826323    时间: 2016-1-23 17:52
感谢各位大神




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