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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐小北 中级黑马   /  2014-5-31 13:39  /  6466 人查看  /  21 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;

import java.util.*;
public class Test2
        {
        /* 从键盘接受一个数字,列出该数字的中文表示格式
         * 例如:
         * 键盘输入123,打印出一二三
         * 键盘输入3103,打印出三一零三
         @author Administrator
         */
        //用于跳出循环的标志
        private static boolean isrun=true;
        //提示字符数组
        private static String[] str = null;
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                //初始化提示数组
                str = new String[]{"提示:","打入字符串EXIT或exit则退出改程序!"};
                //作为while循环输出提示的终止条件和要输出的字符数组的下标
                int i = 0;
                //循环输出提示
                while(str.length != i)
                {
                        //输出提示语句,同时把i的值增加
                        System.out.println(str[i++].toString());
                }
                //循环接收并处理输入的字符
                while(isrun)
                {
                        //初始化接收键盘输入的scanner变量
                        Scanner userInput = new Scanner(System.in);
                        //获取用户输入的字符串
                        String input = userInput.nextLine();
                        //该异常会在输入的不是数字的情况下进入catch异常处理
                        try {
                                //将字符型变量强制转换成int型,如果字符型变量不是数字则会抛出异常
                                @SuppressWarnings("unused")
                                int n = Integer.valueOf(input);
                                /*//如果没有异常则把整型的数据强制转换成字符型
                                String StrInput = String.valueOf(n);

                                *//**
                                 * 运行中还出现一种情况
                                 * 当第一位是数字0的情况下
                                 *//*
                                if(input.length()-StrInput.length() > 0)
                                {

                                }*/


                                //输出输入的数据
                                System.out.print("您输入的数字是:" + input + "\n" + "处理后的结果是:");
                                //进入循环来将数字转换成数字字符,以输入的数据的长度为for循环的结束条件
                                for(int j = 0; j < input.length(); j++)
                                {
                                        //将输入的数据取子串,一次取一个,然后在进行判断转换成想要的结果
                                        switch (Integer.valueOf(input.substring(j, j+1)))
                                        {
                                                //判断该数字是0的话转换成零
                                                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("九");
                                                        break;
                                                }
                                        default:
                                                break;
                                        }
                                }
                                //这句话用于换行,作用是防止下次输入和上次分不清楚
                                System.out.println();
                        //进入异常处理,也就是用户输入的一定有字母
                        } catch (Exception e) {
                                //判断用户的意思,如果是退出的话就退出
                                if(input.toString().toLowerCase().equals("exit"))
                                {
                                        isrun=false;
                                        break;
                                }
                                //如果不是退出,那就是用户输入有误或者是不知道规则
                                else
                                        System.out.println("您输入的格式不符合要求!!请重新输入:");
                        }
                }
        }
}


评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

21 个回复

倒序浏览
这是基础测试的题目把。。:L
回复 使用道具 举报 1 0
嗯,是的!
回复 使用道具 举报
        public static void change(int i)
        {
                StringBuilder sb=new StringBuilder();
        String[] s={"零","一","二","三","四","五","六","七","八","九"};
        //int[] arr={1,2,3};
        String int_s=i+"";
        char[] c=int_s.toCharArray();
        for(int x=0;x<c.length;x++)
                {
   String temp=new String(c[x]+"");
   int index=Integer.parseInt(temp);
   System.out.println(s[index]);
        }
        }

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 3 0
键盘录入之后根据录入的数值查表更简单一点吧!
回复 使用道具 举报
海世山盟 发表于 2014-5-31 14:44
public static void change(int i)
        {
                StringBuilder sb=new StringBuilder();

嗯嗯,你这个比较方便,我比较愚钝,呵呵……
回复 使用道具 举报
海世山盟 发表于 2014-5-31 14:44
public static void change(int i)
        {
                StringBuilder sb=new StringBuilder();

新手求科普 int_s 是啥意思 ?
回复 使用道具 举报
import java.io.*;
import java.util.*;
class  TransStreamReaderDemo
{
        public static void main(String[] args) throws IOException
        {       
                BufferedReader bufr=
                                new BufferedReader(new InputStreamReader(System.in));       
                BufferedWriter bufw=
                                new BufferedWriter(new OutputStreamWriter(System.out));

                char[] ch={'零','一','二','三','四','五','六','七','八','九'};
                String line=null;
                while ((line=bufr.readLine())!=null)
                {
                        if(line.equals("over")||line.equals("OVER"))
                                break;
                        char[] chs=line.toCharArray();
                        int[] num=new int[chs.length];
                        for(int i=0; i<num.length; i++)
                        {
                                num[i]=chs[i]-'0';
                                chs[i]=ch[num[i]];       
                        }
                        bufw.write(new String(chs));
                        //bufw.write(line.toUpperCase());
                        bufw.newLine();
                        bufw.flush();
                }
                bufr.close();
                bufw.close();
        }
}

回复 使用道具 举报
  1. /*
  2.         分析:看到题目我们很容易就想到用数组角标来实现数字和汉字的转换
  3.       1、从键盘录入数字需要用到导包
  4.                         使用Scanner的步骤:
  5.                         A:导包
  6.                                 import java.util.Scanner;
  7.                         B:创建对象
  8.                                 Scanner sc = new Scanner(System.in);
  9.                                 System.in:是标准输入流。对应着键盘录入。
  10.                         C:调用方法获取String类型数据
  11.                                 String[] str = sc.nextInt();
  12.                 2、将输入的直接转换成字符串转译成char型数组char[] num ;
  13.                 3、将汉字 零,一,二,三,四,五,六,七,八,九也全部录入数组char []China ;
  14.                 4、这时我们只要将数组num中的元素转换成汉字数字的角标就可以获取到相对应的汉字,怎么转换呢?
  15.                 5、由ASCII码表查到'0'-'9'字符对应的int型数值为48-57,我们可以用number[i]-'0'
  16.                 就可以的到char型数字对应的汉字的脚标,然后只要打印这个汉字就行了
  17. */
  18. //导包
  19. import java.util.Scanner;
  20. public class Test1 {
  21.         public static void main(String[] args){
  22.                 //键盘输入,转换成字符型数组
  23.                 Scanner sc = new Scanner(System.in);
  24.                 //为了提示,我们打印一句"请在键盘上输入一串数字:"
  25.                 System.out.println("请在键盘上输入一串数字:");
  26.                 //接收字符串
  27.                 String str = sc.nextLine();
  28.                 //调用方法.toCharArray();将字符串转译成char型数组
  29.                 char[] num = str.toCharArray();
  30.                 //定义数组,将大写的数字也录入数组
  31.                 char[] China = {'零','一','二','三','四','五','六','七','八','九'};
  32.                 //遍历数组
  33.                 for (int i = 0; i < num.length; i++) {
  34.                         for (int j = 0; j < China.length; j++) {
  35.                         //用num[i]-'0'得到China[]脚标并打印相对应的元素
  36.                                 if (num[i]-'0'==j) {
  37.                                 //根据题目提示,输出时我们不需要换行
  38.                                         System.out.print(China[j]);
  39.                                 }
  40.                         }
  41.                 }
  42.         }
  43. }
复制代码

点评

很详细  发表于 2015-9-3 16:50

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报
看了2楼的代码才知道怎么回事
回复 使用道具 举报
406957151@qq.co 发表于 2014-5-31 16:08
新手求科普 int_s 是啥意思 ?

只是一个变量名而已,我其实是想表达int转换为String的
回复 使用道具 举报
用查表法比较简单点。
回复 使用道具 举报
方法很多。
回复 使用道具 举报
有这么复杂吗
回复 使用道具 举报
路过吧……大家都会做
回复 使用道具 举报
海世山盟 发表于 2014-5-31 19:24
只是一个变量名而已,我其实是想表达int转换为String的

后面发现了 原来就是个变量名 嘿嘿 String int_s=i+""; 这表示啥意思 int 变量i+"" 就变成String
回复 使用道具 举报
经验。。。。。。。。。。。。。。
回复 使用道具 举报
查表法做起来简单啊
回复 使用道具 举报
新手路过,表示看到这么长串,吓尿了:'(
回复 使用道具 举报
LFW 中级黑马 2014-6-4 17:44:55
20#
yinxjfly 发表于 2014-5-31 15:03
键盘录入之后根据录入的数值查表更简单一点吧!

我也觉得是。。看毕老师讲的10进制转16进制时的视频
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马