java - 超过金额限制后不显示消息
问题描述
当我输入超过 3999 的数字时,该消息未显示
我试图在方法内移动消息,但这只会导致更多错误。
import java.util.Scanner;
public class RomanNumerals {
public static String convert(int n) {
String roman = "";
if ((n >= 0) && (n <= 3999)) {
int thousand = (n / 1000);
int hundred = (n % 1000) / 100;
int tens = (n % 100) / 10;
int units = (n % 10);
if (thousand >= 1) {
if (thousand == 1)
roman += "M";
else if (thousand == 2)
roman += "MM";
else roman += "MMM";
}
if (hundred >= 0) {
if (hundred == 0)
roman += "";
else if (hundred == 1)
roman += "C";
else if (hundred == 2)
roman += "CC";
else if (hundred == 3)
roman += "CCC";
else if (hundred == 4)
roman += "CD";
else if (hundred == 5)
roman += "D";
else if (hundred == 6)
roman += "DC";
else if (hundred == 7)
roman += "DCC";
else if (hundred == 8)
roman += "DCCC";
else
roman += "CM";
}
if (tens >= 0) {
if (tens == 0)
roman += "";
else if (tens == 1)
roman += "X";
else if (tens == 2)
roman += "XX";
else if (tens == 3)
roman += "XXX";
else if (tens == 4)
roman += "XL";
else if (tens == 5)
roman += "L";
else if (tens == 6)
roman += "LX";
else if (tens == 7)
roman += "LXX";
else if (tens == 8)
roman += "LXXX";
else
roman += "XC";
}
if (units >= 0) {
if (units == 0)
roman += "";
else if (units == 1)
roman += "I";
else if (units == 2)
roman += "II";
else if (units == 3)
roman += "III";
else if (units == 4)
roman += "IV";
else if (units == 5)
roman += "V";
else if (units == 6)
roman += "VI";
else if (units == 7)
roman += "VII";
else if (units == 8)
roman += "VIII";
else
roman += "IX";
}
} else {
roman = "Number cannot be converted as it exceeds over 3999";
}
return roman;
}
我希望用户输入超过 3999 后的输出显示消息“无法转换数字,因为它超过了 3999”但是当我写一个超过 3999 的数字时,程序就会停止。其他一切正常,并以罗马数字显示正确的整数
有人可以帮我解决这个问题,因为我很困惑
解决方案
经典案例,说明您如何因为缩进不佳而错过看到问题。
以下else
是 withif (units >= 0)
而不是 with if ((n >= 0) && (n <= 3999))
:
} else {
roman = "Number cannot be converted as it exceeds over 3999";
}
此外,在不相关的注释中,您的条件if (units >= 0)
始终为真,因此您可能希望删除此检查或更改它。
编辑convert
:修复右大括号后的完整方法:
public static String convert(int n) {
String roman = "";
if ((n >= 0) && (n <= 3999)) {
int thousand = (n / 1000);
int hundred = (n % 1000) / 100;
int tens = (n % 100) / 10;
int units = (n % 10);
if (thousand >= 1) {
if (thousand == 1)
roman += "M";
else if (thousand == 2)
roman += "MM";
else roman += "MMM";
}
if (hundred >= 0) {
if (hundred == 0)
roman += "";
else if (hundred == 1)
roman += "C";
else if (hundred == 2)
roman += "CC";
else if (hundred == 3)
roman += "CCC";
else if (hundred == 4)
roman += "CD";
else if (hundred == 5)
roman += "D";
else if (hundred == 6)
roman += "DC";
else if (hundred == 7)
roman += "DCC";
else if (hundred == 8)
roman += "DCCC";
else
roman += "CM";
}
if (tens >= 0) {
if (tens == 0)
roman += "";
else if (tens == 1)
roman += "X";
else if (tens == 2)
roman += "XX";
else if (tens == 3)
roman += "XXX";
else if (tens == 4)
roman += "XL";
else if (tens == 5)
roman += "L";
else if (tens == 6)
roman += "LX";
else if (tens == 7)
roman += "LXX";
else if (tens == 8)
roman += "LXXX";
else
roman += "XC";
}
if (units >= 0) {
if (units == 0)
roman += "";
else if (units == 1)
roman += "I";
else if (units == 2)
roman += "II";
else if (units == 3)
roman += "III";
else if (units == 4)
roman += "IV";
else if (units == 5)
roman += "V";
else if (units == 6)
roman += "VI";
else if (units == 7)
roman += "VII";
else if (units == 8)
roman += "VIII";
else
roman += "IX";
}
} else {
roman = "Number cannot be converted as it exceeds over 3999";
}
return roman;
}
推荐阅读
- java - Spring boot JPQL 对位运算符的支持
- python - 再现全连接顺序层
- python - 从一个运行多个 shell 脚本并在每次完成时执行一些操作
- android - 在 Viewport Android App 上从 Wordpress OneSignal 插件发送通知
- javascript - 如何选择具有此 ID 的类来触发事件/如何更改每张幻灯片的标题颜色?
- jenkins - 使用相同的 jenkinsfile 和不同的参数运行 2 个作业
- java - 如何在自定义注释中进行 Rest API 调用?
- php - Wordpress REST API - 如何创建具有空命名空间的 API 路由?
- python - 如何根据列计算单词?
- android - 获取 Firestore 集合中所有键的名称