import java.io.*;
public class money{
public char change1(int a)
{
char c='0';
switch(a){
case 9:c='玖';
case 8:c='捌';
case 7:c='柒';
case 6:c='陆';
case 5:c='伍';
case 4:c='肆';
case 3:c='叁';
case 2:c='贰';
case 1:c='壹';
case 0:c='零';
}
return c;
}
public char change2(int a){
char c='0';
switch(a%4){
case 0:c='元';
case 1:c='十';
case 2:c='百';
case 3:c='千';
}
return c;
}
public void main(String args[]){
float s=0;
System.out.print("请输入个浮点数:");
try{
s=(float)System.in.read();
}
catch(IOException e){
System.err.println(e.toString());
}
int p=(int)s; //取整数部分
float q=s-p;//取小数部分
int A[]=new int[12];//存储每位的数据
int i=0;
for(i=0;p>0;i++)
{
A[i]=p%10;
p=p/10;
}
for(;i>0;i++)
{
System.out.print(change1(A[i]));
if(A[i-1]==0&&A[i]==0){}
else System.out.print(change1(i));
if(i==8)System.out.print("亿");
else if(i==4)System.out.print("万");
}
if(q==0)System.out.println("整");
else{
int j=0;
j=(int)(10*q);
if(j!=0)System.out.print(change1(j)+"角");
else System.out.print("零");
j=(int)(100*q-10*j);
if(j!=0)System.out.print(change1(j)+"分");
}
System.out.println();
}
}
----------------解决方案--------------------------------------------------------
你的算法是不是有点问题,总是说数组溢出。还有你的程序里问题太多了,我帮你改了下,但是还没有正确的结果,我把程序贴出来,你再改一下,还有我不知道你的这个程序是要做什么?
import java.io.*;
class method{
public String change1(int a)
{
String c="";
switch(a){
case 9:c="玖";
case 8:c="捌";
case 7:c="柒";
case 6:c="陆";
case 5:c="伍";
case 4:c="肆";
case 3:c="叁";
case 2:c="贰";
case 1:c="壹";
case 0:c="零";
}
return c;
}
public String change2(int a){
String c="";
switch(a%4){
case 0:c="元";
case 1:c="十";
case 2:c="百";
case 3:c="千";
}
return c;
}
}
public class money{
public static void main(String args[]){
method pt=new method();
BufferedReader x = new BufferedReader(new InputStreamReader(System.in));
float s=0;
System.out.print("请输入个浮点数:");
try{
s=Float.parseFloat(x.readLine());
System.out.println(s);
System.out.println((int) s);
}
catch(IOException e){
System.err.println(e.toString());
}
//int p=Integer.parseInt(s); //取整数部分
int p=(int) s;
float q=s-p;//取小数部分
int A[]=new int[12];//存储每位的数据
int i=0;
for(i=0;p>0;i++)
{
A[i]=p%10;
p=p/10;
}
for(i=1;i>0;i++)
{
System.out.print(pt.change1(A[i]));
if(A[i-1]==0&&A[i]==0){}
else
System.out.print(pt.change1(i));
if(i==8)
System.out.print("亿");
else if(i==4)
System.out.print("万");
}
if(q==0)
System.out.println("整");
else{
int j=0;
j=(int)(10*q);
if(j!=0)
System.out.print(pt.change1(j)+"角");
else
System.out.print("零");
j=(int)(100*q-10*j);
if(j!=0)
System.out.print(pt.change1(j)+"分");
}
System.out.println();
}
}
----------------解决方案--------------------------------------------------------
读入一个浮点数值,将其转换为中文金额的大写方式,如123.45,转换为:壹佰贰拾叁元肆角伍分。要求:
(1)当金额为整数时,只表示整数部分,省略小数部分,并添加“整”字。例如,123表示为:壹佰贰拾叁元整;
(2)当金额中含有连续的0时,只需写一个“零”即可,例如, 10005表示为:壹万零伍元整;
(3)10的表示方式,例如,110元表示为:壹佰壹拾元整,而10则表示为:拾元整。
这个程序的要求是这样的
----------------解决方案--------------------------------------------------------
大体扫了一下,初步发现如下几个问题:
第一:public void main(String args[]){}这句是有问题的~~main函数要运行格式为:public static void main(String args[])
第二:你在main函数里调用change1()这个方法时,因为change1()该方法并非静态的,所以你应当在main函数里先写一句Money money = new Money(); 然后money.change1()这样来调用~
第三:也就是2楼的云中雾mm所说的为什么会出现数组溢出的问题,原因在这里:
for(i=0;p>0;i++)
{
A[i]=p%10;
p=p/10;
}
这是一个死循环。。。(汗,这个循环死的。。。太酷了)
PS:另外,建议楼主在定义类名的时候第一个字母大写,这是编程的国际规范问题~呵呵,还是最好力求规范吧~~不然的话money money = new money();这样也不好看是吧~
时间有限,不能细看,抱歉,请楼主更改完这三个错误后再进行调试,如果还是不行我再看~
[此贴子已经被作者于2006-11-19 17:35:21编辑过]
----------------解决方案--------------------------------------------------------