Java初学者-不带开关的罗马数字到十进制
我在修AP计算机科学课程,我对这个代码有点问题。我们要制作一种方法,将罗马数字字符串转换成十进制值 到目前为止,我们只讨论了if/else语句和while循环。我在这里看到了一些使用switch的答案,但我们班还没有找到答案。我需要一种不使用开关的方法。我只编写了假设罗马数字为非升序的代码,但每当使用“MM”之类的字符串时,该方法都会返回“0”作为值。有人知道为什么会这样吗 任何关于减去数字的提示也将不胜感激Java初学者-不带开关的罗马数字到十进制,java,string,string-comparison,Java,String,String Comparison,我在修AP计算机科学课程,我对这个代码有点问题。我们要制作一种方法,将罗马数字字符串转换成十进制值 到目前为止,我们只讨论了if/else语句和while循环。我在这里看到了一些使用switch的答案,但我们班还没有找到答案。我需要一种不使用开关的方法。我只编写了假设罗马数字为非升序的代码,但每当使用“MM”之类的字符串时,该方法都会返回“0”作为值。有人知道为什么会这样吗 任何关于减去数字的提示也将不胜感激 public int decimalValue ( String roman )
public int decimalValue ( String roman ){
//given a Roman Numeral
int decimal =0;
int a = 0; // a and b used as to check each letter in String roman
int b = 1;
// Assuming in non-ascending order. Need to make for ascending
while ( (a <= (roman.length() - 1) ) && (b <= roman.length() ) ) {
if ( roman.substring(0,1) == "M") {
decimal = decimal + 1000;
}
else if ( roman.substring(0,1) == "D") {
decimal = decimal + 500;
}
else if ( roman.substring(0,1) == "C") {
decimal = decimal + 100;
}
else if ( roman.substring(0,1) == "L") {
decimal = decimal + 50;
}
else if ( roman.substring(0,1) == "X") {
decimal = decimal + 10;
}
else if (roman.substring(0,1) == "V") {
decimal = decimal + 5;
}
else if (roman.substring(0,1) == "I") {
decimal = decimal + 1;
}
a++;
b++;
}
return decimal;
}
public整数小数(字符串罗马){
//给定一个罗马数字
整数小数=0;
int a=0;//a和b用于检查罗马字符串中的每个字母
int b=1;
//以非升序进行假设。需要进行升序
而((a一些事情:
您不需要两个计数变量a
和b
。一个就足够了
您希望检查字符串的字符,因此应该使用roman.charAt(a)
检查字符串中a
位置的字符
与==
比较的字符(和其他基本类型),必须与.equals()比较的字符串
现在使用roman.substring(0,1)
您只需检查字符串的第一个字符,因此您希望将其更改为roman.substring(a,a+1)
或使用我在2中所写的字符。这样您将继续检查一个字符接着一个字符
您还应该考虑像IX这样的数字,这些数字您还不认识;)
有几件事:
您不需要两个计数变量a
和b
。一个就足够了
您希望检查字符串的字符,因此应该使用roman.charAt(a)
检查字符串中a
位置的字符
与==
比较的字符(和其他基本类型),必须与.equals()比较的字符串
现在使用roman.substring(0,1)
您只需检查字符串的第一个字符,因此您希望将其更改为roman.substring(a,a+1)
或使用我在2中所写的字符。这样您将继续检查一个字符接着一个字符
您还应该考虑像IX这样的数字,这些数字您还不认识;)
有几件事:
您不需要两个计数变量a
和b
。一个就足够了
您希望检查字符串的字符,因此应该使用roman.charAt(a)
检查字符串中a
位置的字符
与==
比较的字符(和其他基本类型),必须与.equals()比较的字符串
现在使用roman.substring(0,1)
您只需检查字符串的第一个字符,因此您希望将其更改为roman.substring(a,a+1)
或使用我在2中所写的字符。这样您将继续检查一个字符接着一个字符
您还应该考虑像IX这样的数字,这些数字您还不认识;)
有几件事:
您不需要两个计数变量a
和b
。一个就足够了
您希望检查字符串的字符,因此应该使用roman.charAt(a)
检查字符串中a
位置的字符
与==
比较的字符(和其他基本类型),必须与.equals()比较的字符串
现在使用roman.substring(0,1)
您只需检查字符串的第一个字符,因此您希望将其更改为roman.substring(a,a+1)
或使用我在2中所写的字符。这样您将继续检查一个字符接着一个字符
您还应该考虑像IX这样的数字,这些数字您还不认识;)
不要使用==
比较字符串的内容
取而代之。你的老师会不允许你使用开关吗?
应该允许你让你的代码看起来更好:pSwitch很好!我们在if和else之前就被教导了开关:不要使用==
比较字符串的内容。使用等于()
取而代之。你的老师会不允许你使用开关吗?
应该允许你让你的代码看起来更好:pSwitch很好!我们在if和else之前就被教导了开关:不要使用==
比较字符串的内容。使用等于()
取而代之。你的老师会不允许你使用开关吗?
应该允许你让你的代码看起来更好:pSwitch很好!我们在if和else之前就被教导了开关:不要使用==
比较字符串的内容。使用等于()
取而代之。你的老师会不允许你使用开关吗?
?你应该被允许让你的代码看起来更好:pSwitch很好!我们在if和else的:O之前就已经学会了开关