java.util.NoSuchElementException, хотя hasMOreTokens включены - PullRequest
0 голосов
/ 27 июня 2018

Я использую карту и уменьшу, чтобы напечатать пару слов, разделенных пробелами, и удаляю их знаки препинания, как это. Это сработало на мгновение и теперь дает мне ошибку отсутствия элемента. Я что-то не так делаю?

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 голосов
/ 27 июня 2018

Вам также необходимо проверить перед извлечением первого токена.

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
}
0 голосов
/ 27 июня 2018

Это может произойти, если ваша 'строка' является пустой строкой (line = "").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...