黑马程序员技术交流社区

标题: 键盘录入打印问题 [打印本页]

作者: 谭培龙    时间: 2012-8-9 11:41
标题: 键盘录入打印问题
本帖最后由 谭培龙 于 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? 第二种方法直接不打印?
作者: 瞿乐    时间: 2012-8-9 12:17
第一种方法你将18行改为 String c = number.substring(i, i+1); 试试,因为你获取的是 字符啊,然后map里面放的是字符串,类型不匹配,所以找不到,便为null。
第二种方法同理了,你存入的是 字符,匹配是 int类型的,如果你case 后面时候用的是'0','1','2','3','4','5'这样的,程序就没有问题了
两个我都试过了,可以正确运行。
亲,解决问题了吗
作者: 周坤    时间: 2012-8-9 12:26
char c = number.charAt(i);之后应该把c转成String型
比如String s=String.valueOf(c);就可以了。
第二个,也是没有改变类型。改一下就行了
作者: 谭培龙    时间: 2012-8-9 12:57
瞿乐 发表于 2012-8-9 12:17
第一种方法你将18行改为 String c = number.substring(i, i+1); 试试,因为你获取的是 字符啊,然后map里面 ...

问题解决了。。我把map里面的键改成Character类型也能运行了
谢谢指导




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