黑马程序员技术交流社区
标题:
已完成键盘输入阿拉伯数字控制台打印中文格式如123,一二三,请高手指点
[打印本页]
作者:
任黎明
时间:
2014-6-4 11:23
标题:
已完成键盘输入阿拉伯数字控制台打印中文格式如123,一二三,请高手指点
package com.itheima;
/*
* 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3013,打印出三一零三
* */
import java.util.*;
public class Test4
{
public static void main(String[] args)
{
printConversion();
}
//定义一个方法将输入的阿拉伯数以中文格式输出
public static void printConversion()
{
Scanner in=new Scanner(System.in);
sop("输入:");
int num=in.nextInt();
sop("输出:"+numConversion(num));
in.close();
}
//定义一个阿拉伯数字转换为中文数字的函数numConversion()
public static String numConversion(int n)
{
char[] ch=new char[]{'零','一','二','三','四','五','六','七','八','九'};
StringBuffer sb=new StringBuffer();
while(n!=0)
{
sb.append(ch[n%10]);
n=(n-n%10)/10;
}
sb.reverse();
return sb.toString();
}
//定义一个简化输出方法
public static void sop(Object obj)
{
System.out.print(obj);
}
}
作者:
我叫MT
时间:
2014-6-4 15:38
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws Exception {
System.out.println("请输入一个数字:");
//键盘录入,在这里使用BufferedReader是为了使用读一行的方法
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=bufr.readLine())!=null){
//因为需求是键盘接受一个数字那么我们可以用正则表达式来限制录入的数据以确保录入的就是数字
if(line.matches("\\d+")){
//循环取出每一个字符并对每个字符进行选择返回对应的汉字形式
for(int x=0;x<line.length();x++){
switch(line.charAt(x)){
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;
}
}
}else
//对不匹配的情况进行说明
System.out.print("请保证输入的是一个数字");
System.out.println();
}
//关闭资源
bufr.close();
}
}
复制代码
作者:
Wokno
时间:
2014-6-4 16:40
楼上的有点麻烦,简单点就查表吧,和毕老师的进制转换同理。
作者:
帅哥哥
时间:
2014-6-5 00:53
基础测试题的说~_~
作者:
More
时间:
2014-6-5 11:08
package 演示;
import java.util.Scanner;
public class S{
public static void main(String[] args) {
String[] s={"零 " ,"一","二","三","四","五","六","七","八","九"};
Scanner s1=new Scanner(System.in);
String str=s1.nextLine();
for (int i = 0; i < str.length(); i++) {
int c= str.charAt(i)-'0';//提取键盘输入字符串中的每一个字符再转换成阿拉伯数字
if(c>=0&& c<10){//如果阿拉伯数字在0~9就输出s中相应c位置的元素
System.out.print(s[c]);
}else{
System.out.print("不在范围内!!"+"\n");
}
}
}
}
复制代码
作者:
酋长第一
时间:
2014-9-7 14:03
More 发表于 2014-6-5 11:08
减0是为什么,试了一下,不减程序还做不出来,但是不知道为什么
作者:
lanzy1989
时间:
2014-9-11 11:26
弱弱的问一句直接switch语句不行吗?
作者:
Fightin黑马
时间:
2014-9-14 17:34
lanzy1989 发表于 2014-9-11 11:26
弱弱的问一句直接switch语句不行吗?
用switch太长了程序 用查表法更简单
作者:
lanzy1989
时间:
2014-9-15 21:13
package testfor;
/*
* 2、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,
* 打印出一二三;键盘输入3103,打印出三一零三。
* 分析:根据打进去的数组,转换成中文,可以利用键值法,一个键对应一个值,
* 键盘输入的是string类型的,将其分割成一个一个数,
* 再把这些数一一转成值,把这些值存入数组中,打印出来
*
*
*/
import java.util.*;
public class Test2 {
public static void main(String[] args) {
String s= new Scanner(System.in).nextLine();
//System.out.println(s.charAt(2));
Map<String,String> map=new HashMap<String,String>();
map.put("1", "一");
map.put("2", "二");
map.put("3", "三");
map.put("4", "四");
map.put("5", "五");
map.put("6", "六");
map.put("7", "七");
map.put("8", "八");
map.put("9", "九");
map.put("0", "零");
String sec=new String();
for(int i=0;i<s.length();i++){
sec+=map.get(s.charAt(i)+"");
}
System.out.println(sec);
}
}
作者:
武腊福
时间:
2015-6-18 22:00
package cn.itcast.test1;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//定义一个数组
char [] chs ={'零','一','二','三','四','五','六','七','八','九','十'};
Scanner sc=new Scanner(System.in);
String line =sc.nextLine();
char [] ch=line.toCharArray();
StringBuffer sb=new StringBuffer();
//System.out.println((int)'0');
for (char c:ch){
sb.append(chs[((int) c-48)]);
}
System.out.println(sb.toString());
}
}
作者:
一大把手
时间:
2015-11-14 20:06
懂能懂,就是不知道咋下手
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2