黑马程序员技术交流社区
标题:
帮帮忙啊,有个问题
[打印本页]
作者:
酋长第一
时间:
2014-9-7 13:34
标题:
帮帮忙啊,有个问题
本帖最后由 酋长第一 于 2014-9-8 10:59 编辑
public class Text3 {
public static void main(String[]args){
Scanner sc=new Scanner(System.in);//键盘录入
String[]strs={"零","一","二","三","四","五","六","七","八","九"};//定义一个字符串数据,根据索引从0开始分别对应零,一。。。
for(int x=0;x<strs.length;x++){
int num=sc.nextInt();
if(num==x){//如果输入的数字对应索引,打印大写的数字
System.out.println(strs[x]);
}
}
}
是基础测试的一道题:从键盘接受一个数字,列出该数字的中文表示格式,
例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
如果按照以上写,只能输入单个数字,比如:1,—— 大写一,因为数组索引没有比如:123,数组的索引没有123那么多
我现在想满足题目要求,该怎么弄?
作者:
酋长第一
时间:
2014-9-7 13:41
或者说,这种方法根本不可取?
用别的,给个思路
作者:
孤守星空
时间:
2014-9-7 13:45
可以把输入的数字拆开一个一个换
作者:
turan
时间:
2014-9-7 13:55
之前有基础题分享中有原题
不用scaner 用BufferedReader
下面贴出他给出的代码 可以参照下
package com.itheima;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test2
{
/**
* 2、 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
*
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println("请从控制台输入一个整数");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try
{
// 转为char数组
char[] input = br.readLine().toCharArray();
// 反向历遍
for (int i = input.length - 1; i >= 0; i--)
{
// 打印经过转换的char
System.out.print(switchChar(input[i]));
}
} catch (IOException e)
{
e.printStackTrace();
}
}
// 转换char为中文字符
public static String switchChar(char c)
{
String msg = "";
switch (c)
{
case '1':
msg = "一";
break;
case '2':
msg = "二";
break;
case '3':
msg = "三";
break;
case '4':
msg = "四";
break;
case '5':
msg = "五";
break;
case '6':
msg = "六";
break;
case '7':
msg = "七";
break;
case '8':
msg = "八";
break;
case '9':
msg = "九";
break;
case '0':
msg = "零";
break;
default:
msg = "";
break;
}
return msg;
}
}
复制代码
作者:
fouraa
时间:
2014-9-7 16:58
再顶一下~
作者:
孤鸢
时间:
2014-9-7 17:16
按你以前的思路,只需将字符串转化成字符数组,然后将字符对就的数字转化成,汉字字符串数组的角标打印即可,下面代码,哥们,你的技术分够了,敢给点黑马币帮帮我不:P
import java.util.Scanner;
public class NumToCh
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String[] str = {"零","一","二","三","四","五","六","七","八","九"};
String str_in = sc.nextLine();
//将读到的字符串转成字符数组
char[] char_in = str_in.toCharArray();
for(int i = 0; i<str_in.length(); i++)
{
//字符可跟整数混合运算,不过字符是按ASCII码表算的,0的ASCII码表对应48
int p = (char_in[i]-48) % 10;
System.out.print(str[p]);
}
}
}
复制代码
作者:
家进
时间:
2014-9-8 17:15
孤鸢 发表于 2014-9-7 17:16
按你以前的思路,只需将字符串转化成字符数组,然后将字符对就的数字转化成,汉字字符串数组的角标打印即可 ...
不错,简短有力又符题,比我写的简单多了
作者:
李天富
时间:
2014-9-8 19:53
import java.util.Scanner;
class toCh
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int num=in.nextInt();
toCh(num);
}
public static void toCh(int num)
{
char[] ch={'零','一','二','三','四','五','六','七','八','九'};
int k=1,temp=num;//k变量记录num的最高单位,比如num=3000时,k=1000.
while(temp>=10)//获取num最高单位的过程。
{
temp=temp/10;
k=k*10;
}
while (k>0)
{
int index=num/k;//获取num最高位的数字。
num=num%k;//去掉num最高位。例如,num4398,去掉最高位后就是398.
System.out.print(ch[index]);
k=k/10;
}
}
}
复制代码
String的很多功能还没学到,所以先这样写,也算一种思路吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2