黑马程序员技术交流社区
标题:
大家好,有点基础问题请教下大家
[打印本页]
作者:
宋丹
时间:
2014-3-7 20:02
标题:
大家好,有点基础问题请教下大家
---------------------- <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]);
}
}
}
--------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
复制代码
作者:
syw02014
时间:
2014-3-7 20:15
本帖最后由 syw02014 于 2014-3-7 20:18 编辑
class CollectionsDemo
{
public static void main(String[]args)
{
int[]arr={3,1,3,4,1,2,3,0,9,6,4,5,3};
dayin(arr);
}
public static void dayin(int[] arr )
{ char[]chs={'零','一','二','三','四','五','六','七','八','九'};//'零'后不能为中文逗号
for(int x=0;x<arr.length ;x++ )//x未定义
{
int temp=arr[x];
System.out.print(chs[temp]);//不换行输出
}
}
}
复制代码
上面程序的结果:
三一三四一二三零九六四五三
作者:
宋丹
时间:
2014-3-7 20:20
谢谢你,是我不小心,一堆问题头都大了
作者:
osully
时间:
2014-3-7 21:29
从你的题目看 刚好是我刚学到的部分 ,就顺便练习一下,如下:
可以在控制台输入123 然后回车 再输入3103 或者其他数字 回车就会显示中文
从键盘接受一个数字,列出该数字的中文表示格式
例如:
键盘输入123,打印出一二三
键盘输入3103,打印出三一零三
import java.io.*;
public class Test1 {
public static void main(String[] args) {
show();
}
public static void show() {
BufferedReader bfr = new BufferedReader(
new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(
System.out));
String s = null;
try {
while ((s = bfr.readLine()) != null) {
if ("over".equals(s.toLowerCase()))
break;
char[] arr = s.toCharArray();
s=toChs(arr);
bfw.write(s);
bfw.newLine();
bfw.flush();
}
}
catch (Exception e) {
throw new RuntimeException("请输入纯数字");
}
finally {
try {
if (s != null) {
bfr.close();
bfw.close();
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
public static String toChs(char[] arr) {
String[]chs={"零","一","二","三","四","五","六","七","八","九"};
String s = "";
for (int i = 0; i < arr.length; i++) {
int x = Integer.parseInt(arr[i]+"");
s += chs[x];
}
return s;
}
}
复制代码
作者:
也许依然
时间:
2014-3-7 22:36
import java.io.*;
public class Test1 {
public static void main(String[] args)throws Exception{
//接收键盘的数据,是纯文本,使用Reader体系中的转换流 InputStreamReader
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//定义一个字符数组,存储零到九的中文表示,使用查表法
char[] chs = {'零','一','二','三','四','五','六','七','八','九'};
//定义int型数据,接收read()方法的返回值,作为判断循环结束的条件
int len = 0;
while((len=bufr.read())!=-1){
//如果输入的是0到9的数字,则打印其中文表示
if(len>=48 && len<=57){
System.out.print(chs[len-48]);
}
}
//关闭流
bufr.close();
}
复制代码
给你作为参考看一下
作者:
twtzhongxin
时间:
2014-3-7 22:55
基础测试的一道题,下面是我的实现方法,仅供参考
package com.itheima;
/*
* 第一题:
* 从键盘接受一个数字,列出该数字的中文表示格式
* 例如:
* 键盘输入123,打印出一二三
* 键盘输入3103,打印出三一零三
*/
import java.io.*;
public class Text1 {
public static void main(String[] args)throws IOException
{
System.out.println("请输入一个数字:");
BufferedReader bufr=
new BufferedReader(new InputStreamReader(System.in));
//定义一个字符串生成器,用于存储中文数字。
StringBuilder s=new StringBuilder();
//分别定义一个数字数组和一个中文数组,并呈一一对应的关系,方便转化。
int[] number={'0','1','2','3','4','5','6','7','8','9'};
String[] NUM={"零","一","二","三","四","五","六","七","八","九"};
int line=0;//
while((line=bufr.read())!=-1)//从输入流中取出单个字符。
{
if(line=='\n')//输入回车时打印出中文
{
System.out.println(s);
s.delete(0, s.length());//将字符串生成器清空。以便下次打印。
}
//通过循环判断输入的数字,并将对应的中文存入生成器中。
for(int i=0;i<10;i++)
{
if(line==number[i])
{
s.append(NUM[i]);
break;
}
}
}
bufr.close();//关流。
}
}
复制代码
作者:
宋丹
时间:
2014-3-9 22:48
你们用的代码,我还没学到,我才看到面向对象,键盘的输入还不会用;我会加快学习的脚步的
作者:
宋丹
时间:
2014-3-9 22:50
/*
从键盘接受一个数字,列出该数字的中文表示格式
例如:
键盘输入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]);
}
}
}
作者:
北极雪871208
时间:
2014-3-23 21:42
宋丹 发表于 2014-3-9 22:48
你们用的代码,我还没学到,我才看到面向对象,键盘的输入还不会用;我会加快学习的脚步的 ...
哥们我也是,零基础,确实感觉看得慢,不过没法发,看一些就要明白,稳扎稳打吧!加油!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2