作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 AP 计算机科学类(class),但我遇到了此代码的问题。我们将创建一个将罗马数字字符串转换为十进制值的方法。
到目前为止,我们只了解了 if/else 语句和 while 循环。我在这里看到了一些使用 switch 的答案,但我们的类(class)还没有到达那里。我需要一种不使用 switch 的方法来做到这一点。我只编写了假设罗马数字按非升序排列的代码,但每当使用像“MM”这样的字符串时,该方法都会返回“0”作为值。有人知道为什么会发生这种情况吗?
任何有关减去数字的提示也将不胜感激。
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;
}
最佳答案
一些事情:
a
和 b
。一个就够了a
的字符==
比较的字符(和其他基本类型),必须与 .equals()
比较的字符串roman.substring(0,1)
您只是检查字符串的第一个字符,因此您想将其更改为 roman.substring(a, a+ 1)
或使用我在 2 中编写的字符。这样您将不断检查一个又一个字符。关于Java 初学者 - 不带开关的罗马数字到十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317697/
我正在 prolog 中完成一项作业扫描数字列表并应返回该列表是否是有效的罗马数字以及数字的十进制值。例如) 1 ?- roman(N, ['I'], []). N = 1 true. 2 ?- 当我
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在尝试将字符串分成多个部分以读取罗马数字。例如,如果用户输入 "XI" 我希望程序能够理解我是 1,X 是 10,这样才能进行数据验证。 if(string roman == "X") int r
我是一名优秀的程序员,十分优秀!