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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 20140829 中级黑马   /  2014-10-10 14:09  /  2784 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         public static void Method2(String a) {
  2.                 String[] str = { "零", "一", "二", "三 ", "四 ", "五 ", "六 ", "七 ", "八 ",
  3.                                 " 九" };
  4.                 StringBuilder sBuilder = new StringBuilder();
  5.                 sBuilder.append(a);
  6.                 for (int i = 0; i < sBuilder.length(); i++) {
  7.                         int t = Integer.parseInt(sBuilder.substring(i, i + 1));
  8.                         sop(str[t]);
  9.                 }
  10.         }
复制代码


评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

11 个回复

倒序浏览
这个是查表法获取数字组合的大写形式,例如“234”获取“二三四”。首先是传入字符串添加到字符串缓冲区,在获取单个字符的字符子串通过Integer的方法获取到int型的数值,作为角标查表获取大写形式,最后打印出来。
回复 使用道具 举报
能重点解释一下for循环里面的内容吗,谢谢
回复 使用道具 举报
刘家斌 发表于 2014-10-10 14:22
这个是查表法获取数字组合的大写形式,例如“234”获取“二三四”。首先是传入字符串添加到字符串缓冲区, ...


能重点解释一下for循环里面的内容吗,谢谢
回复 使用道具 举报
你这个
  1. import java.util.Scanner;
  2. public class Demo2 {
  3.         public static void main(String[] args)throws Exception{
  4.                 Scanner sn =new Scanner(System.in);
  5.                 intTohanzi(sn);
  6.                
  7.                
  8.         }

  9.         private static void intTohanzi(Scanner sn) {
  10.                 String[] str = {"零","一","二","三","四","五","六","七","八","九"};
  11.                 StringBuffer sb1 = new StringBuffer();
  12.                 StringBuffer sb2 = new StringBuffer();
  13.                 sb1.append(sn.nextInt());
  14.                 for(int i =0;i<sb1.length();i++){
  15.                 int a = Integer.parseInt(sb1.substring(i, i+1));
  16.                 sb2.append(str[a]);               
  17.         }
  18.                 System.out.println(sb2.toString());
  19.         }
  20. }
复制代码
不就是输入一串数字的字符串用汉字返回吗
回复 使用道具 举报 0 1
20140829 发表于 2014-10-10 14:28
能重点解释一下for循环里面的内容吗,谢谢

for循环里面定义变量初始为0,在 不超过字符串缓冲区内的字符串长度的情况下,从0角标开始截取,因为包含头不包含尾,所以截取的(i,i+1)只是一个i角标的字符子串,在把他转换成int型,用变量记录去查表,如果是1就去1角标的“一”,以此类推分别打印。
回复 使用道具 举报
默默丶 发表于 2014-10-10 14:30
你这个不就是输入一串数字的字符串用汉字返回吗

这个我知道,我要的是解释,能给我重点解释一下for循环里面的东西吗?谢谢
回复 使用道具 举报
for (int i = 0; i < sBuilder.length(); i++) {
                        int t = Integer.parseInt(sBuilder.substring(i, i + 1));
                        sop(str[t]);
用for循环将缓冲区里面的元素从1到sb.length();
(sBuilder.substring(i, i + 1)这句话是将缓冲区里面的元素一个一个的取出来 因为substring包含头不包含尾
Integer.parseInt 这句话强制将里面的元素转化为Integer类型 ,这句话因为抛异常。因为有可能没输入数字
sop(str[t]); 强转完的元素作为角标将str[]数组中的元素打印出来
回复 使用道具 举报
默默丶 发表于 2014-10-10 15:46
for (int i = 0; i < sBuilder.length(); i++) {
                        int t = Integer.parseInt(sBuil ...

讲的很详细,谢谢
回复 使用道具 举报
默默丶 发表于 2014-10-10 15:46
for (int i = 0; i < sBuilder.length(); i++) {
                        int t = Integer.parseInt(sBuil ...

不过(sBuilder.substring(i, i + 1));这句还是理解不了。
回复 使用道具 举报
20140829 发表于 2014-10-10 15:53
不过(sBuilder.substring(i, i + 1));这句还是理解不了。

(sBuilder.substring(i, i + 1));
StringBuilder sb =new StringBuilder();这是新建一个缓冲区对象
(sBuilder.substring(i, i + 1));   sb.substring(first,last);这个方法你去查api文档 这是一个用角标去获取
缓冲区元素的一个方法 不过这是方法包含first 不包含last  
例子sb.substring(2,5);  这就是取出sb这个缓冲区内 角标从2到4的元素 不包含5
如果这还不懂的话  我没办法了
回复 使用道具 举报 1 0
酷酷酷酷酷酷酷酷酷酷酷酷
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马