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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© love~陌 中级黑马   /  2014-6-2 19:14  /  1195 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package wangkang;

  2. import java.util.Arrays;
  3. import java.util.Scanner;

  4. public class Test3 {
  5.         /*
  6.          * 3、 从键盘接受一个数字,列出该数字的中文表示格式,
  7.          * 例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  8.          * */
  9.         public static void main(String[] args) {
  10.                
  11.                 Scanner s=null;
  12.                 Long l=null;;
  13.                 char[] ch=null;
  14.                 try {
  15.                         s=new Scanner(System.in);
  16.                         l=s.nextLong();
  17.                         ch=l.toString().toCharArray();
  18.                         System.out.println(Arrays.toString(ch));
  19.                         //程序在这之前都是正确的,数组遍历的时候就没结果了
  20.                         for (int i = 0; i < ch.length; i++) {
  21.                                 caseChinese(ch[i]);
  22.                         }
  23.                        
  24.                 } catch (Exception e) {
  25.                         System.out.println("输入错误!");
  26.                 }
  27.         }
  28.        
  29.         public static void caseChinese(int c){
  30.                 switch(c){
  31.                 case 0:
  32.                         System.out.print("零");
  33.                         break;
  34.                 case 1:
  35.                         System.out.print("一");
  36.                         break;
  37.                 case 2:
  38.                         System.out.print("二");
  39.                         break;
  40.                 case 3:
  41.                         System.out.print("三");
  42.                         break;
  43.                 case 4:
  44.                         System.out.print("四");
  45.                         break;
  46.                 case 5:
  47.                         System.out.print("五");
  48.                         break;
  49.                 case 6:
  50.                         System.out.print("六");
  51.                         break;
  52.                 case 7:
  53.                         System.out.print("七");
  54.                         break;
  55.                 case 8:
  56.                         System.out.print("八"); ;
  57.                         break;
  58.                 case 9:
  59.                         System.out.print("九");
  60.                         break;
  61.                                
  62.                 }
  63.         }
  64. }
复制代码



我觉得下面封装的caseChinese方法可以换成返回值类型为String,这个希望大神帮我完成;
我的第二个问题就是希望大神依照现有封装的caseChinese方法来修改我主函数里面的代码

跪谢!!!!!!!!!!!!

5 个回复

倒序浏览
Switch的返回类型要是为String的话,是Jdk1.7版本新支持的功能哦,jdk1.6版本Switch支持返回类型是byte、char、short、int、枚举。楼主的Jdk是什么版本的
回复 使用道具 举报
把CASE语句里的数字加个单引号  '' 即可,因为你得到的字符数组与CASE里的数字不对应,加上单引号就能解决了
回复 使用道具 举报
本帖最后由 ゞ导火索゛ 于 2014-6-2 22:57 编辑

toCharArray()是转换成字符数组,所以你的caseChinese(int c)应该换成 caseChinese(char c), 然后case中每个数字用单引号括起来 表示是字符‘0’
回复 使用道具 举报
先回答第二个问题:首先你的代码是ok的,唯一注意的一点是你在调用caseChinese函数时传递进的参数不是int,你把你的这句                      话 caseChinese(Integer.parseInt(ch+""));改成: caseChinese(Integer.parseInt(ch+"")); 就ok了。
再回答你的第一个问题:针对这个需求,没必要写的那个复杂,像下面这就可以的:【仅供参考】

  1. import java.io.*;

  2. public class Test3 {

  3.                 public static void main(String[] args) throws IOException {
  4.                         System.out.println("请输入一串数字:");
  5.                         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  6.                         String input = br.readLine();
  7.                         System.out.println(caseChinese(input));;
  8.                 }
  9.                
  10.         public static String caseChinese(String in)
  11.         {
  12.                 char []str4China = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
  13.                 StringBuilder sb = new StringBuilder();
  14.                 for(int i=0; i<in.length(); i++){
  15.                         int a=Integer.parseInt(in.charAt(i)+"");
  16.                         sb.append(str4China[a]);
  17.                 }
  18.                 return sb.toString();
  19.         }
  20. }
复制代码



回复 使用道具 举报
123_yaya 发表于 2014-6-2 19:27
Switch的返回类型要是为String的话,是Jdk1.7版本新支持的功能哦,jdk1.6版本Switch支持返回类型是byte、ch ...

原来还可以这样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马