由于本人思维逻辑不是很清晰,虽然对了,但是仅供参考=======================
-
输入金额:使用
Scanner
类从控制台读取用户的金额输入。 -
金额单位转换:通过
convertmoney
方法将金额数字转换为中文大写数字单位。这个方法使用一个数组来对应每一位数字的中文表述,如“零”、“壹”、“贰”等。 -
控制金额大小:代码中有一个
while
循环,用来检查用户输入的金额是否超出一定范围(在这个例子中是9999999),如果超出则提示用户重新输入。 -
处理零的显示:代码中有一个
while
循环用来在金额前添加“零”字,以满足中文金额的表述习惯。这个循环会一直执行直到count
减到0。count
的初始值是7,代表在最大的中文金额单位“拾”之前需要添加“零”的次数。 -
组合金额单位:
danwei
方法用来将转换后的数字单位按照中文金额的表述顺序组合起来。 -
输出结果:最后,程序输出转换后的中文大写金额。
package string;
import javax.swing.plaf.synth.ColorType;
import java.util.Scanner;
import java.util.zip.CheckedOutputStream;
public class str4 {
public static void main(String[] args) {
/*
*1.键盘输入金额
*2.转换单位
*
* */
//1.创建scanner对象输入数据
int count=7;//默认长度7
Scanner s=new Scanner(System.in);
String result="";
//2.对money判断,进行转换
System.out.println("请输入金额:");
int money=s.nextInt();
while (true) {
if(money<9999999){
while (money>0){
int a=money%10;
result=convertmoney(a)+result;
money=money/10;
count--;
}
break;
}
else {
System.out.println("输入错误,金额无效,重新输入:");
money=s.nextInt();
}
}
//方法1: String x=str3.reverse(result);
//方法2:通过改变赋值的顺序 result=convertmoney(a)+result;
while (count!=0)
{
result='零'+result;
count--;
}
String str1=danwei(result);
System.out.println(str1);
}
/*
* 1.我要做什么?
* 2.我要怎么做才能实现
* 3.要不要返回值,什么类型的?
* */
//金额转换
//相当于查表法
public static String convertmoney(int money){
//为什么要封装导方法中,因为要实现独立性
//用户传入一个金额,就可以实现转换
String result="";
String arr[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟"};//存放单位
for (int i = 0; i < arr.length; i++) {
if(i==money){
result=result+arr[i];
}
}
return result;
}
public static String danwei(String s){
String result="";
String a[]={"佰","拾","万","千","百","拾","元",};
for (int i = 0; i < s.length(); i++) {
char c=s.charAt(i);
result = result+c+a[i];
}
return result;
}
}