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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谭培龙 初级黑马   /  2012-8-9 11:41  /  1504 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谭培龙 于 2012-8-9 12:06 编辑
  1. public class Test {
  2. public static void main(String[] args) {
  3.         Scanner scan = new Scanner(System.in);
  4.         System.out.print("输入数字:");
  5.         Map<String,String> map = new HashMap<String,String>();
  6.         map.put("0","零");
  7.         map.put("1","壹");
  8.         map.put("2","贰");
  9.         map.put("3","叄");
  10.         map.put("4","肆");
  11.         map.put("5","伍");
  12.         map.put("6","陆");
  13.         map.put("7","柒");
  14.         map.put("8","捌");
  15.         map.put("9","玖");
  16.         String number = scan.next();
  17.         for(int i = 0; i < number.length(); i++){
  18.         char c = number.charAt(i);
  19.         System.out.print(map.get(c));
  20.         }
  21. }
  22. }
复制代码
我用另外一种方法做也还是不行。。第二种方法
public class Test1{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("输入数字:");
String number = scan.next();
for(int i = 0; i < number.length(); i++){
  char c = number.charAt(i);
  switch(c){
   case 0:
    System.out.print("零");
    break;
   case 1:
    System.out.print("壹");
    break;
   case 2:
    System.out.print("贰");
    break;
   case 3:
    System.out.print("叄");
    break;
   case 4:
    System.out.print("肆");
    break;
   case 5:
    System.out.print("伍");
    break;
   case 6:
    System.out.print("陆");
    break;
   case 7:
    System.out.print("柒");
    break;
   case 8:
    System.out.print("捌");
    break;
   case 9:
    System.out.print("玖");
   }
}
}

需求是把数字的123456789打印成汉字的壹贰……  
第一种方法打印的是null? 第二种方法直接不打印?

3 个回复

倒序浏览
第一种方法你将18行改为 String c = number.substring(i, i+1); 试试,因为你获取的是 字符啊,然后map里面放的是字符串,类型不匹配,所以找不到,便为null。
第二种方法同理了,你存入的是 字符,匹配是 int类型的,如果你case 后面时候用的是'0','1','2','3','4','5'这样的,程序就没有问题了
两个我都试过了,可以正确运行。
亲,解决问题了吗
回复 使用道具 举报
char c = number.charAt(i);之后应该把c转成String型
比如String s=String.valueOf(c);就可以了。
第二个,也是没有改变类型。改一下就行了
回复 使用道具 举报
瞿乐 发表于 2012-8-9 12:17
第一种方法你将18行改为 String c = number.substring(i, i+1); 试试,因为你获取的是 字符啊,然后map里面 ...

问题解决了。。我把map里面的键改成Character类型也能运行了
谢谢指导
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马