gpt4 book ai didi

Java 字符串索引超出范围错误

转载 作者:行者123 更新时间:2023-11-29 05:08:07 26 4
gpt4 key购买 nike

我遇到了一些我不知道如何修复的 Java 代码问题。我想知道我是否可以得到一些帮助来弄清楚为什么我总是这样

java.lang.StringIndexOutOfBoundsException: String index out of range: 1

这是出现问题的代码片段(它是一个更大的作业包的一部分......):

public class MyMapper extends Mapper {

@Override
//method takes docName and data as string
public void map(String documentID, String document) {

//this string array hold all the delimiters for our split
//String[] separators = {",", ".", "!", "?", ";", ":", "-", "' "," "};

//splits the string 'document' according to delimiters
String[] words = document.split(",|\\.|\\!|\\?|\\;|\\:|\\-|\\' |\\ |\\'.");


// for each word in String[] words, check that each word is legitimate
for (String word : words) {

if (isAlpha(word)){
//System.out.println(word);
emit(word.substring(0, 1).toUpperCase() , "1");
}

else;

}
}


// private helper method to check that each word is legitimate (alphas-only)
private boolean isAlpha(String name) {
char[] chars = name.toCharArray();

for (char c : chars) {
if(!Character.isLetter(c)) {
return false;
}
}

return true;
}

}

我想做的是获取一个文档(通过 bufferedReader 以字符串形式存储)并捕获文档中每个单词的第一个字母,并将它们大写。

***** 更新代码*****

我决定在我的私有(private)帮助方法中按照建议检查空“字”。现在一切正常。

以下是用于文档目的的更新代码:

// private helper method to check that each word is legitimate (alphas-only)
private boolean isAlpha(String name) {

if (name.equals(""))
return false;

char[] chars = name.toCharArray();

for (char c : chars) {
if(!Character.isLetter(c)) {
return false;
}
}

return true;

最佳答案

看起来有时您的 word 是空的。先检查一下,看看你有什么东西可以用:

if (isAlpha(word)){        
if(!word.isEmpty()){ //you could also use 'if(word.length == 0)'
emit(word.substring(0, 1).toUpperCase() , "1");
}
}

或者,在您的 isAlpha() 方法中进行检查。

关于Java 字符串索引超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com