Java 课堂作业错误
我的代码出现错误,我如何着手修复它。基本上,如果字符串中有第二个字符,那么从字符串中提取第二个字符的最佳(入门级)方法是什么 编辑:错误为Java 课堂作业错误,java,Java,我的代码出现错误,我如何着手修复它。基本上,如果字符串中有第二个字符,那么从字符串中提取第二个字符的最佳(入门级)方法是什么 编辑:错误为 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:686) at RomanNumeral.main
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 1
at java.lang.String.charAt(String.java:686)
at RomanNumeral.main(RomanNumeral.java:38)
我的代码:
import java.util.Scanner;
public class RomanNumeral {
public static void main(String[] args) {
// Declare Variable
int total = 0, length = 0;
int first;
int second;
String romanNumerals;
// Declare Scanner
Scanner in = new Scanner(System.in);
// Get Input
System.out.println("Please input a Roman Numeral: ");
romanNumerals = in.next();
length = romanNumerals.length();
while (length != 0) {
first = valueFinder(romanNumerals.charAt(0));
if (length > 1) {
second = valueFinder(romanNumerals.charAt(1));
} else {
second = 0;
}
if (first >= second || length == 1) {
total += first;
romanNumerals = romanNumerals.substring(1);
System.out.println(romanNumerals);
}// End of if
else {
total += (second - first);
romanNumerals = romanNumerals.substring(2);
System.out.println(romanNumerals);
}// End of Else
}// End of loop
System.out.println(total);
}// End of Main Method
// valueFinder Method
public static int valueFinder(char numeral) {
int value = 0;
switch (numeral) {
case 'I':
value = 1;
break;
case 'V':
value = 5;
break;
case 'X':
value = 10;
break;
case 'L':
value = 50;
break;
case 'C':
value = 100;
break;
case 'D':
value = 500;
break;
case 'M':
value = 1000;
break;
default:
System.out.println(numeral
+ " is not a Roman Numeral, and will be ignored.");
break;
}// End of Switch
return value;
}// End of Method
}// End of Class
在获取
罗马数字
的子字符串后,需要更新长度
变量。字符串本身随着子字符串的增加而变短,但您所指的长度不是。需要时只调用string.length()方法会更简单,因为这样就不需要维护length
变量
或者,创建另一个方法来修改字符串和长度计数器(将其命名为
subStringAndUpdateLength()
)。但是这太过分了。在获取罗马数字的子字符串后,需要更新长度
变量。字符串本身随着子字符串的增加而变短,但您所指的长度不是。需要时只调用string.length()方法会更简单,因为这样就不需要维护length
变量
或者,创建另一个方法来修改字符串和长度计数器(将其命名为subStringAndUpdateLength()
)。但是那太过分了。你能把错误贴出来吗。。?这会有帮助。@Pnchappy92:我编辑了你的问题以改进格式。仅供将来参考,您可以突出显示问题中的代码块,并使用文本框上方的按钮自动设置代码格式。您是否可以发布错误。。?这会有帮助。@Pnchappy92:我编辑了你的问题以改进格式。仅供将来参考,您可以突出显示问题中的代码块,并使用文本框上方的按钮自动格式化代码。