即使包含hasMOreTokens,java.util.NoSuchElementException

时间:2018-06-26 21:21:39

标签: java string token

我正在使用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终端中复制。但是是的,它曾经工作过一次。 enter image description here

2 个答案:

答案 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
}