我正在使用map并缩小以打印成对的用空格分隔的单词对,并删除这样的标点符号。它工作了一会儿,现在给了我没有elementEsception的错误。我在做错什么吗?
String line = value.toString();
String delim = " ";
boolean returnDelims = false;
StringTokenizer tokenizer = new StringTokenizer(line, delim, returnDelims );//separa el string line en tokens
String prevToken = tokenizer.nextToken();
while (tokenizer.hasMoreTokens()) {
String currToken = tokenizer.nextToken();
String CurrentPrint = prevToken + " " + currToken.replace(",", "").replace(".", "");
if(!prevToken.contains(",")&&!prevToken.contains("."))
... //打印CurrentPrint }
该错误位于使用hasMoreTokens的第一行:抱歉,我无法在cloudera终端中复制。但是是的,它曾经工作过一次。
答案 0 :(得分:0)
如果您的“行”为空字符串(line =“”),则可能会发生这种情况。
答案 1 :(得分:0)
您也需要在获取第一个令牌之前进行检查。
String line = value.toString();
String delim = " ";
boolean returnDelims = false;
StringTokenizer tokenizer = new StringTokenizer(line, delim, returnDelims );//separa el string line en tokens
if(tokenizer.hasMoreTokens()){
String prevToken = tokenizer.nextToken();
while (tokenizer.hasMoreTokens()) {
String currToken = tokenizer.nextToken();
String CurrentPrint = prevToken + " " + currToken.replace(",", "").replace(".", "");
//... handle tokens
}
}else{
// handle empty line
}