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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 一顿一只牛 于 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();
        }        
}
为什么我第一次输入数字的时候总是不能转换,要第二次才行,求大神解惑啊。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 赞一个!

查看全部评分

12 个回复

倒序浏览
a6511631 来自手机 高级黑马 2014-8-16 21:36:46
沙发
我在做基础测试的时候做过这道题
回复 使用道具 举报
a6511631 来自手机 高级黑马 2014-8-16 21:41:56
藤椅
System.out.println(toChinese(bufr.readLine()));    这里给toChinese方法传参传个line你看怎么样?
回复 使用道具 举报
a6511631 发表于 2014-8-16 21:41
System.out.println(toChinese(bufr.readLine()));    这里给toChinese方法传参传个line你看怎么样? ...

大神呐,一下子ok了。。。
   然后我们要是输入的不是数字,我们该怎么判断啊,这个就真不会啊
回复 使用道具 举报
  1. public static boolean isInteger(String value) {
  2.   try {
  3.    Integer.parseInt(value);
  4.    return true;
  5.   } catch (NumberFormatException e) {
  6.    return false;
  7.   }
复制代码
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报

:lol 德玛西亚万岁
回复 使用道具 举报
回复 使用道具 举报
象牙 中级黑马 2014-8-16 23:26:12
9#
测试了一下..........
回复 使用道具 举报
我基础测试有这题
回复 使用道具 举报
我在基础自测的时候遇到了这个题,用查表法做的
回复 使用道具 举报
大神,好威武.
回复 使用道具 举报
感谢各位大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马