我也是刚开始学习java,闲着做了这么一个程序。(这个程序只是做着玩玩,各位可以适当更改)
可以把输入的数字转化为我们读出来的那种效果,基本上功能都还可以,关于“0”在不同位上的语法也写好了
例如:1101
输出为:一千一百零一
代码如下(eclipse):
package int_to_big;
import java.util.Scanner;
public class AllRight {
public static void main(String[] args) {
System.out.println("please input");
Scanner ff = new Scanner(System.in);
long fir = ff.nextLong();
String Sfir = ""+fir;
String outfir = "";
int fir_len = Sfir.length();
int mul = 10;
int[] firint = new int[fir_len];
for(int i=0;i<firint.length;i++){
firint[i] = (int)(fir%mul);
fir=fir/mul;
}
//数字及权
String[] big =new String[]{"零","一","二","三","四","五","六","七","八","九"};
String[] value = new String[]{"","十","百","千"};
String[] mvalue = new String[]{"万","亿"};
int k;
for(int i=fir_len-1;i>=0;i--){
k=i;
if(i>7)//k:降数位,使例如千万以千进行下一步计算
k=k-8;
else if(i>3)
k=k-4;
//下方程序,如若当前位为0,,向下查至万,亿权位,若非全零且前一位非零如6054,输出零(上一权位之下如千,另做处理),若全零如6500,则不输出零
if((firint[i]==0)){
int y=0,jiz=0;
if(i>7)
jiz=8;
else if(i>3)
jiz=4;
else
jiz=0;
for(int j=i;j>=jiz;j--){
y+=firint[j];
}
if((y!=0)&&((firint[i+1]!=0)||(i==jiz+3)))//避免双0重复,以及千位问题
outfir+="零";
}
else {
outfir+=big[(int)firint[i]];
outfir+=value[k];}
if(i==4)
outfir+=mvalue[0];
if(i==8)
outfir+=mvalue[1];
}
System.out.println(outfir);
}
}
结果: