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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© leo_lzj 中级黑马   /  2014-5-6 20:42  /  1201 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 leo_lzj 于 2014-5-6 20:42 编辑

各位大神,本人初来乍到,菜鸟一枚,现在遇到一个问题:
在网上看到一些资料,关于将数字转换成中文字显示,网上代码如下(部分本人修改了下):
  1. import java.util.Scanner;

  2. public class DataChange {
  3.         public static void main(String[] args) {
  4.                 char[] arr = {'零','一','二','三','四','五','六','七','八','九'};//定义中文字数组
  5.                 Scanner in = new Scanner (System.in);//创建扫描器对象in
  6.                 String str = in.nextLine ();//将当前行信息传给str
  7.                 String str1 = str.replace(" ", "");  //去掉字符串中的所有空格;                           
  8.                 StringBuilder sb = new StringBuilder ();
  9.                 for (int i = 0; i < str1.length(); i++) { //  遍历str1 字符串的元素;
  10.                         sb.append(arr[str1.charAt(i)-'0']);//把字符串转换成单个字符再转换成数字然后,进行查表法;
  11.                 }
  12.                 System.out.println(sb.toString());

  13.                 in.close();//关闭扫描器
  14.         }
  15. }
复制代码
以上代码确实能够实现阿拉伯数字转换成中文形式。这里使用的是StringBuilder。

现在我的问题是:能不能有简单的方法,不使用StringBuilder?
大概思路:将数字进行逐个提取出来,存放在数组中,再与中文字数组进行一一对应打印,就是简简单单的思路,不用调入其他类。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
这个毕老师视频里面好像有讲过一个关于星期的例子,好像和这个类似
回复 使用道具 举报
当输入字母什么的时候,应该报告输入错误,我这个程序,如果字母在数字里就不会打印字母以及后面的数字,这里还能改进一下,

  1. import java.io.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 try
  7.                 {
  8.                         BufferedInputStream br= new BufferedInputStream(System.in);//创建键盘读取流对象
  9.                
  10.                 String[] arrs={"零","一","二","三","四","五","六","七","八","九"};//把中文放到数组里并与角标相对应
  11.                 int s=0;
  12.                 while ((s=br.read())!=-1)
  13.                 {
  14.                         if(s=='\r'||s=='\n')
  15.                                 break;
  16.                         System.out.print(arrs[s-48]);//arrs[br.read()]获取的是ascii码值,所以-48即可以得到对应的整数
  17.                
  18.                 }
  19.                 br.close();

  20.                        
  21.                 }
  22.                 catch (IOException e)
  23.                 {
  24.                         System.out.print("键盘读取出错");
  25.                 }
  26.                
  27.                
  28.                
  29.                
  30.         }

  31. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
GGdog 发表于 2014-5-6 22:53
这个毕老师视频里面好像有讲过一个关于星期的例子,好像和这个类似

o,好的,视频我还没学到哪里,我再看看吧,谢谢了
回复 使用道具 举报
gentleman 发表于 2014-5-6 22:57
当输入字母什么的时候,应该报告输入错误,我这个程序,如果字母在数字里就不会打印字母以及后面的数字,这 ...

不明白阁下是何意?我帖子中所贴的代码是能够正常实现,这是其中一种方法,我现在想问的是有没有另一种方法?
回复 使用道具 举报
楼主 , 你贴出来的代码的思路已经很明确了,
首先你必须保证:
第一、输入的都是数字
第二、必须要遍历输入的数字的每一位,然后根据每一位上的数字,用查表法找到中文数组中对应的数据

基本的思路就是这个
回复 使用道具 举报
stamSuper 发表于 2014-5-7 11:16
楼主 , 你贴出来的代码的思路已经很明确了,
首先你必须保证:
第一、输入的都是数字

嗯 对,我的思路也是这样的,实际上面的代码也是按照这个思路,我现在想的是有没有以这种思路进行,但是另外一种程序的写法。谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马