项目展示
1.金额大写转换
2.罗马数字转换
项目简介
输入一个金额,将其转换为其他类型并输出
现已支持
一、7位大写金额
特点:
-利用查表法(10.3实现)
//键入一个int类型的7位数字,输出7位金额大写
public static String toCapital() {
//1.键盘录入一个金额
Scanner sc = new Scanner(System.in);
int money;
while (true) {
System.out.println("请录入一个金额");
//进入循环,若输入的数字不满足(0~9999999)则重新输入直至满足条件为止
money = sc.nextInt();
if (money >= 0 && money <= 9999999) {//满足条件直接退出循环
break;
} else {
System.out.print("此金额无效,请重新输入");
System.out.println("(提示:合法的数据范围为0~9999999)");
}
}
//定义一个字符变量接受钱的大写
StringBuilder moneyStr = new StringBuilder();
//得到money的每一个数字并转换为中文
do {//2135
int ge = money % 10;
String capitalNumber = getCapitalNumber(ge);
moneyStr.insert(0, capitalNumber);
money = money / 10;
} while (money != 0);
//在前面补0,补足7位
int count = 7 - moneyStr.length();
for (int i = 0; i < count; i++) {
moneyStr.insert(0, "零");
}
//插入单位
//定义一个数组表示单位
String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
//定义一个变量进行字符串拼接并接受结果
StringBuilder result = new StringBuilder();
//插入单位数字进行拼接
for (int i = 0; i < moneyStr.length(); i++) {
char c = moneyStr.charAt(i);//"零零零贰叁壹伍"
result.append(c).append(arr[i]);//"零佰零拾零万贰仟叁佰壹拾伍元"
}
return result.toString();
}
//将大写字符串存入一个字符数组中(查表法)
public static String getCapitalNumber(int number) {
String[] arr = {"零", "壹", "贰", "参", "肆", "伍", "陆", "柒", "捌", "玖"};
return arr[number];
}
二、9位罗马文字
特点:
-利用switch法替换字符串进行输出(10.16实现)
//键入一个长度小于等于9的只包含数字的字符串,将内容变成罗马数字
public static String toRomaNum() {
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.println("请输入一个字符串");
str = sc.next();
//2.检验字符串是否满足规则
boolean flag = checkStr(str);
if (flag) {
break;
} else {
System.out.println("当前的字符串不符合规则,请重新输入");
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
String s = getRomeNumber(c);
sb.append(s);
}
return sb.toString();
}
//对输入转换罗马数字方法中的字符串进行条件检验
public static boolean checkStr(String str) {
//要求1:长度为小于等于9
if (str.length() > 9) {
return false;
}
//要求2:只能是数字
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);//0-9
if (c < '0' || c > '9') {
return false;
}
}
//只有当字符串里面的所有的字符全都判断完毕了,才能认为当前的字符是符合规则的
return true;
}
//将罗马字符串存入一个字符数组中(switch法)
public static String getRomeNumber(char number) {
String str = switch (number) {
case '0' -> "";
case '1' -> "Ⅰ";
case '2' -> "Ⅱ";
case '3' -> "Ⅲ";
case '4' -> "Ⅳ";
case '5' -> "Ⅴ";
case '6' -> "Ⅵ";
case '7' -> "Ⅶ";
case '8' -> "Ⅷ";
case '9' -> "Ⅸ";
default -> str = "";
};
return str;
}
}
完整代码实现
package project.amountConversion;
import java.util.InputMismatchException;
import java.util.Scanner;
public class mainInterface {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Welcome to Fekilh's amount conversion system!");
while (true) {
System.out.println("***************************************************");
System.out.println("** Please select the option you want. **");
System.out.println("** 0: 转换为大写金额 1:转换为罗马数字 **");
System.out.println("** 2: 密码加密or解密 4: 待定 **");
System.out.println("** 4:退出操作 **");
System.out.println("***************************************************");
int select = sc.nextInt();
switch (select) {
case 0: //转换为7位大写金额
for (; ; ) {
System.out.println("该操作只能转换为7位大写金额");
try {
String result = toCapital();
System.out.println("转换后的大写金额是:\n" + result);
} catch (InputMismatchException e) {
System.out.println("您输入的数据有问题");
}
System.out.println("是否需要再次进行此操作?y:确认/n:退出");
String r = sc.next();
if (r.equalsIgnoreCase("N")) {
break;
}
}
break;
case 1://转换为9位罗马数字
for (; ; ) {
System.out.println("该操作只能转换为9位罗马数字");
String result = toRomaNum();
System.out.println("转换后的大写金额是:\n" + result);
System.out.println("是否需要再次进行此操作?y:确认/n:退出");
String r = sc.next();
if (r.equalsIgnoreCase("N")) {
break;
}
}
break;
case 2:
break;
case 3:
break;
}
if (select == 4) {
System.out.println("Looking forward to seeing you again!");
break;
}
}
}
//键入一个int类型的7位数字,输出7位金额大写
public static String toCapital() {
//1.键盘录入一个金额
Scanner sc = new Scanner(System.in);
int money;
while (true) {
System.out.println("请录入一个金额");
//进入循环,若输入的数字不满足(0~9999999)则重新输入直至满足条件为止
money = sc.nextInt();
if (money >= 0 && money <= 9999999) {//满足条件直接退出循环
break;
} else {
System.out.print("此金额无效,请重新输入");
System.out.println("(提示:合法的数据范围为0~9999999)");
}
}
//定义一个字符变量接受钱的大写
StringBuilder moneyStr = new StringBuilder();
//得到money的每一个数字并转换为中文
do {//2135
int ge = money % 10;
String capitalNumber = getCapitalNumber(ge);
moneyStr.insert(0, capitalNumber);
money = money / 10;
} while (money != 0);
//在前面补0,补足7位
int count = 7 - moneyStr.length();
for (int i = 0; i < count; i++) {
moneyStr.insert(0, "零");
}
//插入单位
//定义一个数组表示单位
String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
//定义一个变量进行字符串拼接并接受结果
StringBuilder result = new StringBuilder();
//插入单位数字进行拼接
for (int i = 0; i < moneyStr.length(); i++) {
char c = moneyStr.charAt(i);//"零零零贰叁壹伍"
result.append(c).append(arr[i]);//"零佰零拾零万贰仟叁佰壹拾伍元"
}
return result.toString();
}
//将大写字符串存入一个字符数组中(查表法)
public static String getCapitalNumber(int number) {
String[] arr = {"零", "壹", "贰", "参", "肆", "伍", "陆", "柒", "捌", "玖"};
return arr[number];
}
//键入一个长度小于等于9的只包含数字的字符串,将内容变成罗马数字
public static String toRomaNum() {
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.println("请输入一个字符串");
str = sc.next();
//2.检验字符串是否满足规则
boolean flag = checkStr(str);
if (flag) {
break;
} else {
System.out.println("当前的字符串不符合规则,请重新输入");
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
String s = getRomeNumber(c);
sb.append(s);
}
return sb.toString();
}
//对输入转换罗马数字方法中的字符串进行条件检验
public static boolean checkStr(String str) {
//要求1:长度为小于等于9
if (str.length() > 9) {
return false;
}
//要求2:只能是数字
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);//0-9
if (c < '0' || c > '9') {
return false;
}
}
//只有当字符串里面的所有的字符全都判断完毕了,才能认为当前的字符是符合规则的
return true;
}
//将罗马字符串存入一个字符数组中(switch法)
public static String getRomeNumber(char number) {
String str = switch (number) {
case '0' -> "";
case '1' -> "Ⅰ";
case '2' -> "Ⅱ";
case '3' -> "Ⅲ";
case '4' -> "Ⅳ";
case '5' -> "Ⅴ";
case '6' -> "Ⅵ";
case '7' -> "Ⅶ";
case '8' -> "Ⅷ";
case '9' -> "Ⅸ";
default -> str = "";
};
return str;
}
}