Java 超过金额限制后未显示消息
当我输入的数字超过3999时,消息未显示 我试图在方法中移动消息,但这只会导致更多错误Java 超过金额限制后未显示消息,java,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 hund
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;
import java.util.Scanner;
公共类罗马数字{
公共静态字符串转换(int n){
字符串罗马=”;
如果((n>=0)和&(n=1){
如果(千==1)
罗马+=“M”;
否则如果(千==2)
罗马+=“毫米”;
else roman+=“嗯”;
}
如果(百>=0){
如果(百=0)
罗马+=”;
否则如果(百=1)
罗马+=“C”;
否则如果(百=2)
罗马+=“抄送”;
否则如果(百=3)
罗马+=“CCC”;
否则如果(百=4)
罗马+=“CD”;
否则如果(百=5)
罗马+=“D”;
否则如果(百=6)
罗马+=“DC”;
否则如果(百=7)
罗马+=“DCC”;
否则如果(百=8)
罗马+=“DCCC”;
其他的
罗马+=“厘米”;
}
如果(十个>=0){
如果(十=0)
罗马+=”;
else if(十=1)
罗马+=“X”;
else if(十=2)
罗马+=“XX”;
否则如果(十=3)
罗马+=“XXX”;
else if(十=4)
罗马+=“XL”;
else if(十=5)
罗马+=“L”;
else if(十=6)
罗马+=“LX”;
else if(十=7)
罗马+=“LXX”;
否则如果(十=8)
罗马+=“LXXX”;
其他的
罗马+=“XC”;
}
如果(单位>=0){
如果(单位=0)
罗马+=”;
else如果(单位=1)
罗马+=“我”;
否则,如果(单位=2)
罗马+=“II”;
否则如果(单位=3)
罗马+=“III”;
否则如果(单位=4)
罗马+=“四”;
否则如果(单位=5)
罗马+=“V”;
否则如果(单位=6)
罗马+=“六”;
否则如果(单位=7)
罗马+=“七”;
否则如果(单位==8)
罗马+=“八”;
其他的
罗马+=“九”;
}
}否则{
roman=“数字超过3999无法转换”;
}
返回罗马;
}
我希望用户输入超过3999后的输出会显示消息“数字无法转换,因为它超过3999”,但当我写入超过3999的数字时,程序就停止了。其他一切都正常工作,并以罗马数字显示正确的整数
有人能帮我解决这个问题吗?因为我很困惑,你怎么会因为缩进太差而看不见问题呢 以下
else
与if(units>=0)
一起使用,而不是与if((n>=0)和&(n=0)
一起使用,因此您可能希望删除此检查或更改它
编辑:完全转换
固定右大括号后的方法:
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;
}
公共静态字符串转换(int n){
字符串罗马=”;
如果((n>=0)和&(n=1){
如果(千==1)
罗马+=“M”;
否则如果(千==2)
罗马+=“毫米”;
else roman+=“嗯”;
}
如果(百>=0){
如果(百=0)
罗马+=”;
否则如果(百=1)
罗马+=“C”;
否则如果(百=2)
罗马+=“抄送”;
否则如果(百=3)
罗马+=“CCC”;
否则如果(百=4)
罗马+=“CD”;
否则如果(百=5)
罗马+=“D”;
否则如果(百=6)
罗马+=“DC”;
否则如果(百=7)
罗马+=“DCC”;
否则如果(百=8)
罗马+=“DCCC”;
其他的
罗马+=“厘米”;
}
如果(十个>=0){
如果(十=0)
罗马+=”;
else if(十=1)
罗马+=“X”;
else if(十=2)
罗马+=“XX”;
否则如果(十=3)
罗马+=“XXX”;
else if(十=4)
罗马+=“XL”;
else if(十=5)
罗马+=“L”;
else if(十=6)
罗马+=“LX”;
else if(十=7)
罗马+=“LXX”;
否则如果(十=8)
罗马+=“LXXX”;
其他的
罗马+=“XC”;
}
如果(单位>=0){
如果(单位=0)
罗马+=”;
else如果(单位=1)
罗马+=“我”;
否则,如果(单位=2)
罗马+=“II”;
否则如果(单位=3)
罗马+=“III”;
否则如果(单位=4)
罗马+=“四”;
否则如果(单位=5)
罗马+=“V”;
否则如果(单位=6)
罗马+=“六”;
否则如果(单位=7)
罗马+=“七”;
否则如果(单位==8)
罗马+=“八”;
其他的
罗马+=“九”;
}
}否则{
roman=“数字超过3999无法转换”;
}
返回罗马;
}
这是一个典型的例子,说明了由于缩进不良,您可能无法看到问题
以下else
与if(units>=0)
一起使用,而不是与if((n>=0)和&(n=0)
一起使用,因此您可能希望删除此检查或更改它
编辑:完全转换
固定右大括号后的方法:
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;
}
公共静态字符串转换(int n){
字符串罗马=”;
如果((n>=0)和&(n=1){
如果(千==1)
罗马+=“M”;
否则如果(千==2)