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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋丹 中级黑马   /  2014-3-7 20:02  /  1792 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. ---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
复制代码

大家好,本人菜鸟一枚,有个问题请教下。我自己写了个小程序,几句话,一堆问题,头疼。大家帮我看下啊
/*
从键盘接受一个数字,列出该数字的中文表示格式
例如:
键盘输入123,打印出一二三
键盘输入3103,打印出三一零三
思路,输入一个数字,打印对应的中文,可以建一个映射表,用数组实现这个功能
步骤:1,建立一个数组,数组内的元素是对应下标的汉字形式
                2,输出这个数组
*/
class Test
{
        public static void main(String[]args)
        {
                int[]arr={3,1,3};
                dayin(arr);
        }
        //定义一个函数,实现对应的输出功能
        /*
        1,实现的输出功能,不需要返回值 void
        2,有未知内容,打印的是一个数组,类型是int【】arr
        */
        public static void dayin(int[] arr )
        {        char[]chs={'零','一','二','三','四','五','六','七','八','九'};
                for (x=0;x<arr.length ;x++ )
                {
                        int temp=arr[x];
                        System.out.println(chs[temp]);
                }
               
               
        }
}
  1. --------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 syw02014 于 2014-3-7 20:18 编辑
  1. class CollectionsDemo
  2. {
  3.         public static void main(String[]args)
  4.         {
  5.                 int[]arr={3,1,3,4,1,2,3,0,9,6,4,5,3};
  6.                 dayin(arr);
  7.         }
  8.         public static void dayin(int[] arr )
  9.         {        char[]chs={'零','一','二','三','四','五','六','七','八','九'};//'零'后不能为中文逗号
  10.                 for(int x=0;x<arr.length ;x++ )//x未定义
  11.                 {
  12.                         int temp=arr[x];
  13.                         System.out.print(chs[temp]);//不换行输出
  14.                 }


  15.         }
  16. }
复制代码


上面程序的结果:
三一三四一二三零九六四五三

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
谢谢你,是我不小心,一堆问题头都大了
回复 使用道具 举报
从你的题目看 刚好是我刚学到的部分 ,就顺便练习一下,如下:
可以在控制台输入123  然后回车 再输入3103 或者其他数字 回车就会显示中文

从键盘接受一个数字,列出该数字的中文表示格式
例如:
键盘输入123,打印出一二三
键盘输入3103,打印出三一零三


  1. import java.io.*;

  2. public class Test1 {
  3.         public static void main(String[] args) {
  4.                 show();
  5.         }
  6.        
  7.         public static void show() {
  8.                 BufferedReader bfr = new BufferedReader(
  9.                                 new InputStreamReader(System.in));
  10.                 BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(
  11.                                 System.out));
  12.                 String s = null;
  13.                 try {
  14.                         while ((s = bfr.readLine()) != null) {
  15.                                 if ("over".equals(s.toLowerCase()))
  16.                                         break;
  17.                                 char[] arr = s.toCharArray();
  18.                                 s=toChs(arr);
  19.                                 bfw.write(s);
  20.                                 bfw.newLine();
  21.                                 bfw.flush();
  22.                         }
  23.                 }
  24.                 catch (Exception e) {
  25.                         throw new RuntimeException("请输入纯数字");
  26.                 }
  27.                 finally {
  28.                         try {
  29.                                 if (s != null) {
  30.                                         bfr.close();
  31.                                         bfw.close();
  32.                                 }
  33.                         }
  34.                         catch (IOException e) {
  35.                                 e.printStackTrace();
  36.                         }
  37.                 }
  38.         }

  39.         public static String toChs(char[] arr) {
  40.                 String[]chs={"零","一","二","三","四","五","六","七","八","九"};
  41.                 String s = "";
  42.                 for (int i = 0; i < arr.length; i++) {
  43.                         int x = Integer.parseInt(arr[i]+"");
  44.                         s += chs[x];
  45.                 }
  46.                 return s;
  47.         }
  48. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
  1. import java.io.*;

  2. public class Test1 {
  3.         public static void main(String[] args)throws Exception{
  4.                
  5.                 //接收键盘的数据,是纯文本,使用Reader体系中的转换流 InputStreamReader
  6.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  7.                
  8.                 //定义一个字符数组,存储零到九的中文表示,使用查表法
  9.                 char[] chs = {'零','一','二','三','四','五','六','七','八','九'};
  10.                
  11.                 //定义int型数据,接收read()方法的返回值,作为判断循环结束的条件
  12.                 int len = 0;
  13.                 while((len=bufr.read())!=-1){
  14.                        
  15.                         //如果输入的是0到9的数字,则打印其中文表示
  16.                         if(len>=48 && len<=57){
  17.                                 System.out.print(chs[len-48]);
  18.                         }               
  19.                 }
  20.                
  21.                 //关闭流
  22.                 bufr.close();
  23.                
  24.                


  25.         }
复制代码
给你作为参考看一下

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
基础测试的一道题,下面是我的实现方法,仅供参考
  1. package com.itheima;
  2. /*
  3. * 第一题:
  4. * 从键盘接受一个数字,列出该数字的中文表示格式
  5. * 例如:
  6. * 键盘输入123,打印出一二三
  7. * 键盘输入3103,打印出三一零三
  8. */
  9. import java.io.*;
  10. public class Text1 {
  11.         public static void main(String[] args)throws IOException
  12.         {
  13.                 System.out.println("请输入一个数字:");
  14.                 BufferedReader bufr=
  15.                                 new BufferedReader(new InputStreamReader(System.in));
  16.                 //定义一个字符串生成器,用于存储中文数字。
  17.                 StringBuilder s=new StringBuilder();
  18.                 //分别定义一个数字数组和一个中文数组,并呈一一对应的关系,方便转化。
  19.                 int[] number={'0','1','2','3','4','5','6','7','8','9'};
  20.                 String[] NUM={"零","一","二","三","四","五","六","七","八","九"};
  21.                 int line=0;//
  22.                 while((line=bufr.read())!=-1)//从输入流中取出单个字符。
  23.                 {
  24.                         if(line=='\n')//输入回车时打印出中文
  25.                         {
  26.                                 System.out.println(s);
  27.                                 s.delete(0, s.length());//将字符串生成器清空。以便下次打印。
  28.                         }
  29.                         //通过循环判断输入的数字,并将对应的中文存入生成器中。
  30.                         for(int i=0;i<10;i++)
  31.                         {
  32.                                 if(line==number[i])
  33.                                 {
  34.                                         s.append(NUM[i]);
  35.                                         break;
  36.                                 }
  37.                         }
  38.                 }
  39.                 bufr.close();//关流。
  40.         }

  41. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
你们用的代码,我还没学到,我才看到面向对象,键盘的输入还不会用;我会加快学习的脚步的
回复 使用道具 举报
/*
从键盘接受一个数字,列出该数字的中文表示格式
例如:
键盘输入123,打印出一二三
键盘输入3103,打印出三一零三
思路,输入一个数字,打印对应的中文,可以建一个映射表,用数组实现这个功能
步骤:1,建立一个汉字表数组,数组内的元素是对应下标的汉字形式
                2,对一个整数各个位置取值,把值转换为汉字表
*/
class Test4
{
        public static void main(String[]args)
        {
                dayin(68973738);
        }
        /*需求定义一个函数,实现对应数的输出功能
        思路:先对这个数进行各个位置的数值取出来,把这个模存储到一个数组中去
                        输出这个数组中对应的汉字表输出即可
        1,实现的输出功能,不需要返回值 void
        2,有未知内容,打印的是一个数组,类型是int【】arr
        */
        public static void dayin(int num )
        {        //定义一个汉字表,下标等于对应的汉字;
                char[]chs={'零','一','二','三','四','五','六','七','八','九'};
                /*第一种方法,把模存到一个数组中去,再把数组中的值变成汉字表的下标
                int[] arr=new int [100];
                int pos=0;
               
                while (num!=0)
                {
                        int temp=num%10;//把取得数%10的值
                        arr[pos++]=temp;//把模存到一个数组中去
                        num=num/10;
                }
                for (int x=pos-1;x>=0 ;x--)
                {
                        int y=arr[x]; //把模变成汉字表的下标       
                        System.out.print(chs[y]);
                }
                */
                /*第二种方法,这种方法是反向输出,不完美,不需要建立数组来存储模的值
                while (num!=0)
                {
                        int temp=num%10;
                        System.out.print(chs[temp]);
                        num=num/10;
                }
                */
                /*第三种方法,把求得的模的值直接变成汉字表的下标,为了实现反向输出,需要建立一个数组
                把模对应的汉字表中值存储到里面去,然后反向输出
                因为这个数组存储的是汉字表中的值是char,所以这个数组类型为char
                */
                char[]arr=new char[100];//长度越大越好
                int pos=100;//把指针定位到数组外一位
                while(num!=0)
                {
                        int temp=num%10;
                        arr[--pos]=chs[temp];//把模对应的汉字表中的值存储到数组中去
                        num=num/10;
                }
                for (int x=pos;x<100 ;x++ )
                {
                        System.out.print(arr[x]);
                }

        }
       

}
回复 使用道具 举报
宋丹 发表于 2014-3-9 22:48
你们用的代码,我还没学到,我才看到面向对象,键盘的输入还不会用;我会加快学习的脚步的 ...

哥们我也是,零基础,确实感觉看得慢,不过没法发,看一些就要明白,稳扎稳打吧!加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马