我向您报告我老师的问题:
实现静态实用程序方法intValue并重用您的代码
// TODO implement this
public static int intValue(String roman) {
return 0;
}
我不太明白为什么我需要使用静态方法,为什么我需要重用代码,我认为它是这样的:
public int intValue () {
int decimal = 0;
int lastNumber = 0;
number = number.toUpperCase();
for (int x = number.length() - 1; x >= 0; x--) {
char convertNumber = number.charAt(x);
switch (convertNumber) {
case 'M':
decimal = processDecimal(1000, lastNumber, decimal);
lastNumber = 1000;
break;
case 'D':
decimal = processDecimal(500, lastNumber, decimal);
lastNumber = 500;
break;
case 'C':
decimal = processDecimal(100, lastNumber, decimal);
lastNumber = 100;
break;
case 'L':
decimal = processDecimal(50, lastNumber, decimal);
lastNumber = 50;
break;
case 'X':
decimal = processDecimal(10, lastNumber, decimal);
lastNumber = 10;
break;
case 'V':
decimal = processDecimal(5, lastNumber, decimal);
lastNumber = 5;
break;
case 'I':
decimal = processDecimal(1, lastNumber, decimal);
lastNumber = 1;
break;
}
}
return decimal;
有人能给我解释一下吗?由于 你的老师想让你去掉return 0;
这行,并写下方法主体的内容:
public static int intValue(String roman) {
//write code here that returns an int based on a Roman numeral String like "MVCXIII"
}
如果我在网站的正确操作上犯了错误,我感到非常抱歉。
我将所有的实现方法public int intValue()移动到私有静态int intValue(String roman)中,并重构public int intValue()方法。我想这可能是我老师要求的手段;一个暂定的解决方案如下:
public static int intValue (String roman){
int decimal = 0;
int lastNumber = 0;
roman = roman.toUpperCase();
for (int x = roman.length() - 1; x >= 0; x--) {
char convertNumber = roman.charAt(x);
switch (convertNumber) {
case 'M':
decimal = processDecimal(1000, lastNumber, decimal);
lastNumber = 1000;
break;
case 'D':
decimal = processDecimal(500, lastNumber, decimal);
lastNumber = 500;
break;
case 'C':
decimal = processDecimal(100, lastNumber, decimal);
lastNumber = 100;
break;
case 'L':
decimal = processDecimal(50, lastNumber, decimal);
lastNumber = 50;
break;
case 'X':
decimal = processDecimal(10, lastNumber, decimal);
lastNumber = 10;
break;
case 'V':
decimal = processDecimal(5, lastNumber, decimal);
lastNumber = 5;
break;
case 'I':
decimal = processDecimal(1, lastNumber, decimal);
lastNumber = 1;
break;
}
}
return decimal;
}
public int intValue() {
int rn = this.intValue();
return rn;
}