黑马程序员技术交流社区
标题:
怎么用汉字输出XXXX年呢?
[打印本页]
作者:
梁永奇
时间:
2013-2-23 02:03
标题:
怎么用汉字输出XXXX年呢?
使用Calendar输出日期,用汉字输出星期或者月份,可以建立一个String数组,比如"String[] str1 = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天" };"
可是,如果要输出某一年的汉字表示形式,怎么办呢?
作者:
陈圳
时间:
2013-2-23 08:52
本帖最后由 陈圳 于 2013-2-23 08:59 编辑
public void year(int year)
{
String[] num={"零","一","二","三","四","五","六","七","八","九"};
int[] nums=new int[4];
String newyear="";
String toYear=Integer.toString(year); //将year年转换成字符串
char[] c_num=toYear.toCharArray(); //将year字符串转成字符数组
for(int i=0;i<nums.length;i++)
{
nums
=(int)(c_num
)-48; //将字符数组转成单个数,其实是String输出的角标,char类型转int型后,值发生改变-48
//newyear+=num[nums
]; //将num字符串的角标连起来.组成汉字年份.
//System.out.println(num[nums
]);
newyear+=num[nums
];
}
System.out.println(newyear);
}
我实现的有点麻烦啊,但是实现了.通过字符串转换成字符,再将字符转成单个角标,用num把各个角标值获取,然后用一个新的字符串把他们连起来.
这个将年份转成单个int型数组的过程有些麻烦,我想可以通过千位:year/1000 这种方式获得各个位数.不用组成数组,直接在循环里面赋给一个String内,就可以获得.你试下.
打印结果:二零零四
作者:
陈圳
时间:
2013-2-23 10:54
我把第二种方式做出来了.代码如下:
package Day12;
class Demo
{
public int[] getNum(int year) //获取一个数值每一位的方法
{
int arr[]=new int[4];
for(int i=(arr.length-1),x=10;i>=0;i--)
{
arr[i]=year%x; //取一个整数的每一位数的方法 %10得低位,从个位开始把值赋给arr[i],
year/=x;// 除10使数减少.因为最低位已经取得了.
}
return arr;
}
public static String newYear(int year) //实现汉字打印年份的第一种方法.
{
String[] num={"零","一","二","三","四","五","六","七","八","九"};
Demo d=new Demo();
String newyear="";
int arr[]=d.getNum(year);
for(int i=0;i<arr.length;i++)
newyear+=num[arr[i]];
return newyear;
}
public static String getYear(int year) //实现汉化打印年份的第二种,通过String类与字符数组的转换获得
{
String[] num={"零","一","二","三","四","五","六","七","八","九"};
int[] nums=new int[4];
String newyear="";
String toYear=Integer.toString(year); //将year年转换成字符串
char[] c_num=toYear.toCharArray(); //将year字符串转成字符数组
for(int i=0;i<nums.length;i++)
{
nums[i]=(int)(c_num[i])-48; //将字符数组转成单个数,其实是String输出的角标,char类型转int型后,值发生改变-48
//newyear+=num[nums[i]]; //将num字符串的角标连起来.组成汉字年份.
//System.out.println(num[nums[i]]);
newyear+=num[nums[i]];
}
return newyear;
}
public static void main(String[] args)
{
System.out.println(getYear(2012));
System.out.println(newYear(2004));
}
}
打印结果:
二零一二
二零零四
作者:
杨玲
时间:
2013-2-23 11:10
就按照楼上的思路来是对的,你可以把那个把数字数组转换成文字的方法封装成一个方法,然后直接返回一个字符串就成了。比如:
public String int2string(int[] numbers)
{}
复制代码
然后按照楼上的思路把数组中的数据分别转换成中文并加入都String中就行了,使用的时候只用调用这个方法即可。
//又见伪代码了,呵呵,
public String int2string(int[] numbers)
{
String retVal = "";
String[] nums ={"零","一","二","三","四","五","六","七","八","九"};
for(int i = 0 ; i < numbers.length ; i++)
{
switch(nubers[i])
{
case 0:
retVal +=nums[0];
....0-9都case一下;
}
}
return retVal;
}
复制代码
作者:
丁强强
时间:
2013-2-23 12:12
/**
* 获取当前时间, 格式为: yyyy-mm-dd hh-mm-ss
* @return String 当前时间
*/
public static String getNow()
{
return DateFormat.getDateTimeInstance(2, 2, getLocale()).format( new java.util.Date() );
}
/**
* 获取当前时间, 格式为: yyyy年mm月dd日 上午/下午hh时mm分ss秒
* @return String 当前时间
*/
public static String getNowLong()
{
return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, getLocale()).format( new java.util.Date() );
}
/**
* 获取当前时间(精确到毫秒), 格式为: yyyy-mm-dd hh:mm:ss.nnn
* @return String 当前时间
*/
public static String getNowNano()
{
return new java.sql.Timestamp( System.currentTimeMillis() ).toString();
}
/**
* 获取指定的Locale对象
* @return Locale 返回Locale对象
*/
private static Locale getLocale()
{
return Locale.CHINESE;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2