我在使Java方法正常工作方面遇到了一些问题。在程序中,我创建了一个由不同长度的许多不同单词组成的数组。我正在处理的方法应该读取字长,字母和位置的用户输入,然后Java将打印出与这三个参数匹配的任何单词(例如,如果用户键入字长4,字母A和位置2,将打印出长度为4且在第2位包含字母A的单词。
无论如何,我创建的方法如下所示:
public static void inputMethod(int length, char letter, int position){
for (int index = 0; index < wordTable.length; index++) {
if (length == wordTable[index].length() && letter == wordTable[index].charAt(position) )
System.out.println(wordTable[index]); }
此方法适用于某些输入,但对于其他输入,我收到错误消息,例如:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
at java.lang.String.charAt(Unknown Source)
at Wordarray.inputMethod(Wordarray.java:153)
at Wordarray.main(Wordarray.java:61)
如果有人能向我解释我如何解决这个问题,我将不胜感激!就像我说的那样,我只收到某些输入信息。对于其他输入,程序就像它应该的那样工作。
答案 0 :(得分:7)
嗯,显然position
大于wordTable[index]
(或负数)的字符串长度。您还需要检查字符串的长度。
答案 1 :(得分:2)
如果您已更换
for (int index = 0; index < wordTable.length; index++) {
与
for (int index = 0; index < length; index++) {
这很可能不是你真正想要的。
更好的方法是这样的:
public static void inputMethod(int length, char letter, int position) {
// check if input is valid
if(position < length)
for (int index = 0; index < wordTable.length; index++) {
if (length == wordTable[index].length() && letter == wordTable[index].charAt(position) )
System.out.println(wordTable[index]);
}
答案 2 :(得分:1)
如果给定位置或等于大于当前单词的长度,则可能发生这种情况。另外值得一看:第一个字符position
或0
是1
吗?
答案 3 :(得分:0)
这是您的实际代码吗?您在for循环中使用了三个不同的变量:indexs
,indeks
和index
。即使编译,我也很惊讶。不要重新键入代码,剪切并粘贴实际代码。