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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 宋超2356 于 2014-3-25 18:16 编辑
  1. package com.itheima;

  2. import java.io.*;

  3. public class Test1 {

  4.         /**
  5.          * 1、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  6.          * @param args
  7.          */
  8.                 public static void main(String[] args) {//未实现
  9.                         System.out.println("请输入数字:");
  10.                     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11.                     try {
  12.                    String str = br.readLine();
  13.                    for(int i = 1;i < str.length();i++) {
  14.                            char c = str.charAt(i);
  15.                            int a = (int)c;
  16.                            if(a>0 && a<9) {
  17.                            switch(a) {
  18.                            case 1:
  19.                                    System.out.print("一");
  20.                                    break;
  21.                            case 2:
  22.                                    System.out.print("二");
  23.                                    break;
  24.                            case 3:
  25.                                    System.out.print("三");
  26.                                    break;
  27.                            case 4:
  28.                                    System.out.print("四");
  29.                                    break;
  30.                            case 5:
  31.                                    System.out.print("五");
  32.                                    break;
  33.                            case 6:
  34.                                    System.out.print("六");
  35.                                    break;
  36.                            case 7:
  37.                                    System.out.print("七");
  38.                                    break;
  39.                            case 8:
  40.                                    System.out.print("八");
  41.                                    break;
  42.                            case 9:
  43.                                    System.out.print("九");
  44.                                    break;
  45.                            case 0:
  46.                                    System.out.print("零");
  47.                                    break;
  48.                            }
  49.                    }
  50.                    }
  51.                   } catch (IOException e) {
  52.                    e.printStackTrace();
  53.                   }
  54.                 }
  55.         }
复制代码

不知道上面错在了哪里,运行得不到想要的结果,小白求教...应该怎么改...

评分

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

查看全部评分

11 个回复

倒序浏览
本帖最后由 菜小徐 于 2014-3-24 15:50 编辑

String跟数组一样,下标是从0开始的。
  1. for(int i = 1;i < str.length();i++) 也应该用0开始
复制代码
charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。


回复 使用道具 举报
zengming13 发表于 2014-3-24 15:34
首先,你的限制条件是if(a>0 && a=0 && a

还是运行不出来结果呀~还有什么地方不对么
回复 使用道具 举报
菜小徐 发表于 2014-3-24 15:47
String跟数组一样,下标是从0开始的。 charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 len ...

还有哪些地方不对呀?还是运行不出结果
回复 使用道具 举报
本帖最后由 菜小徐 于 2014-3-24 16:18 编辑
宋超2356 发表于 2014-3-24 15:59
还有哪些地方不对呀?还是运行不出结果

帮你稍微改了一下,运行成功
  1. package  com.itheima;

  2. import java.io.*;

  3. public class Test1 {

  4.         /**
  5.          * 1、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  6.          *
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) {// 未实现
  10.                 System.out.print("请输入数字:");
  11.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  12.                 try {
  13.                         String str = br.readLine();
  14.                         for (int i = 0; i < str.length(); i++) {//这里改为i=0
  15.                                 char c = str.charAt(i);
  16.                                 if (c > ='0' && c <= '9') {//这里改为c > ='0' && c <= '9' ,直接用字符进行判断
  17.                                         switch (c) {
  18.                                         case '1'://加单引号
  19.                                                 System.out.print("一");
  20.                                                 break;
  21.                                         case '2':
  22.                                                 System.out.print("二");
  23.                                                 break;
  24.                                         case '3':
  25.                                                 System.out.print("三");
  26.                                                 break;
  27.                                         case '4':
  28.                                                 System.out.print("四");
  29.                                                 break;
  30.                                         case '5':
  31.                                                 System.out.print("五");
  32.                                                 break;
  33.                                         case '6':
  34.                                                 System.out.print("六");
  35.                                                 break;
  36.                                         case '7':
  37.                                                 System.out.print("七");
  38.                                                 break;
  39.                                         case '8':
  40.                                                 System.out.print("八");
  41.                                                 break;
  42.                                         case '9':
  43.                                                 System.out.print("九");
  44.                                                 break;
  45.                                         case '0':
  46.                                                 System.out.print("零");
  47.                                                 break;
  48.                                         }
  49.                                 }
  50.                         }
  51.                 } catch (IOException e) {
  52.                         e.printStackTrace();
  53.                 }
  54.         }
  55. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;

  4. public class TestMain {

  5.         public static void main(String[] args) {// 未实现
  6.             System.out.println("请输入数字:");
  7.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  8.         try {
  9.        String str = br.readLine();
  10.       
  11.        //下标从0开始i=0
  12.        for(int i = 0;i < str.length();i++) {
  13.                char c = str.charAt(i);
  14.                
  15.                //System.out.println((int)'0'); 的结果是48
  16.                int a = (int)c-48;
  17.                
  18.                //此处应该加等号。不然0和9没法转换
  19.                if(a>=0 && a<=9) {
  20.                switch(a) {
  21.                case 1:
  22.                        System.out.print("一");
  23.                        break;
  24.                case 2:
  25.                        System.out.print("二");
  26.                        break;
  27.                case 3:
  28.                        System.out.print("三");
  29.                        break;
  30.                case 4:
  31.                        System.out.print("四");
  32.                        break;
  33.                case 5:
  34.                        System.out.print("五");
  35.                        break;
  36.                case 6:
  37.                        System.out.print("六");
  38.                        break;
  39.                case 7:
  40.                        System.out.print("七");
  41.                        break;
  42.                case 8:
  43.                        System.out.print("八");
  44.                        break;
  45.                case 9:
  46.                        System.out.print("九");
  47.                        break;
  48.                case 0:
  49.                        System.out.print("零");
  50.                        break;
  51.                }
  52.        }
  53.        }
  54.       } catch (IOException e) {
  55.        e.printStackTrace();
  56.       }
  57.       }
  58. }
复制代码

改好了,具体原因请看注释
回复 使用道具 举报
将char强制转换为int时要记得减去basechar,楼主只要将18行改成:int a=(int)c-'0';即可
回复 使用道具 举报
贴上我做这道题的代码:
  1. package com.itheima;

  2. import java.util.*;

  3. /**
  4. * 第1题: 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  5. *
  6. */

  7. public class test1 {
  8.         public static void main(String[] args) {
  9.                 System.out.println("请输入一个整数,我将返回它的中文表示格式:");
  10.                 Scanner sc = new Scanner(System.in);
  11.                 char[] strarr = sc.nextLine().toCharArray();// 创建一个字符数组,用于存放输入的数字
  12.                 String str = "";// 转换好格式的数字将存放在这里
  13.                 for (char temp : strarr) {//遍历字符数组
  14.                         switch (temp) {//通过switch将字符数组中的字符逐个转换成汉字
  15.                         case '0':
  16.                                 str = str + "零";
  17.                                 break;
  18.                         case '1':
  19.                                 str = str + "一";
  20.                                 break;
  21.                         case '2':
  22.                                 str = str + "二";
  23.                                 break;
  24.                         case '3':
  25.                                 str = str + "三";
  26.                                 break;
  27.                         case '4':
  28.                                 str = str + "四";
  29.                                 break;
  30.                         case '5':
  31.                                 str = str + "五";
  32.                                 break;
  33.                         case '6':
  34.                                 str = str + "六";
  35.                                 break;
  36.                         case '7':
  37.                                 str = str + "七";
  38.                                 break;
  39.                         case '8':
  40.                                 str = str + "八";
  41.                                 break;
  42.                         case '9':
  43.                                 str = str + "九";
  44.                                 break;
  45.                         }// switch

  46.                 }// for
  47.                 System.out.println(str);//输出转换后的结果
  48.                 sc.close();

  49.         }// main
  50. }
复制代码
回复 使用道具 举报
这是优化过的代码,看起来更简洁些
  1. package com.blog;

  2. import java.util.*;

  3. /**
  4. * 第1题: 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  5. *
  6. */

  7. public class blog2 {
  8.         public static void main(String[] args) {
  9.                 System.out.println("请输入一个整数,我将返回它的中文表示格式:");
  10.                 Scanner sc = new Scanner(System.in);
  11.                 char[] strarr = sc.nextLine().toCharArray();// 创建一个字符数组,用于存放输入的数字
  12.                 String[] module = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };// 字符模型
  13.                 for (char temp : strarr) {// 遍历字符数组
  14.                         System.out.print(module[(int) temp - '0']);
  15.                 }// for
  16.                 sc.close();

  17.         }// main
  18. }
复制代码
回复 使用道具 举报
  1.   import java.io.*;
  2.       public class Demo1 {


  3.            

  4.            

  5.                       /**
  6.                        * 1、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  7.                        * @param args
  8.                        */
  9.                               public static void main(String[] args) {//未实现
  10.                                       System.out.println("请输入数字:");
  11.                                   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  12.                                   try {
  13.                                        
  14.                                  String str = br.readLine();
  15.                                  for(int i = 0;i < str.length();i++) {
  16.                                        
  17.                                          char c = str.charAt(i);
  18.                                       
  19.                                         // int a = (int)c;  //这里强转出现错误,程序认为你是想得到1,2,3的ASSIC码所以得到的是这几个数的ASSIC码
  20.                                                                                  //在你的switch语句中没有与值对应的case,所以没有打印输出
  21.                                                                                  //至少有两种改写方法,使用你的强转,但是if判断条件和switch语句中要使用你输入数字相对应的ASSIC码
  22.                                                                                  //这里我在switch中使用字符判断,也可得到正确的答案
  23.                                        if(c>'0' && c<'9') {
  24.                                          switch(c) {
  25.                                          case '1':
  26.                                                  System.out.print("一");
  27.                                                  break;
  28.                                          case '2':
  29.                                                  System.out.print("二");
  30.                                                  break;
  31.                                          case '3':
  32.                                                  System.out.print("三");
  33.                                                  break;
  34.                                          case '4':
  35.                                                  System.out.print("四");
  36.                                                  break;
  37.                                          case '5':
  38.                                                  System.out.print("五");
  39.                                                  break;
  40.                                          case '6':
  41.                                                  System.out.print("六");
  42.                                                  break;
  43.                                          case '7':
  44.                                                  System.out.print("七");
  45.                                                  break;
  46.                                          case '8':
  47.                                                  System.out.print("八");
  48.                                                  break;
  49.                                          case '9':
  50.                                                  System.out.print("九");
  51.                                                  break;
  52.                                          case '0':
  53.                                                  System.out.print("零");
  54.                                                  break;
  55.                                          }
  56.                                  }
  57.                                  }
  58.                                 } catch (IOException e) {
  59.                                  e.printStackTrace();
  60.                                 }
  61.                               }
  62.                       }





复制代码

回复 使用道具 举报
yanzhendong 发表于 2014-3-24 16:31
将char强制转换为int时要记得减去basechar,楼主只要将18行改成:int a=(int)c-'0';即可 ...

有道理,我觉得这样就对了
回复 使用道具 举报
菜小徐 发表于 2014-3-24 16:12
帮你稍微改了一下,运行成功

多谢了这样的确就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马