Я написал код, который принимает строку формата «1 день hh: mm: ss». Используя строковый токенизатор, я пытаюсь разделить строку на различные интересующие нас разделы, а именно конвертировать 1 день в 86400 секунд, часы в минуты и т. Д. У меня ошибка, достигающая секунд, и возвращаю ее с моим кодом. Я не могу понять, где проблема. Я подумал об этом в выходные, и в крайнем случае я решил обратиться к более широкому сообществу за помощью по исправлению ситуации и предложениям улучшить этот код.Ошибка финального скрипта String в Java
Цель: прочитать в строке формата «X дней hh: mm: ss» и преобразовать это в секунды. Код прилагается ниже.
Эта ошибка я получаю следующим образом:
"java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
at ReadIn.parseTime(ReadIn.java:110)
at ReadIn.main(ReadIn.java:60)"
Я собрал у него есть что-то делать с не в состоянии разобрать окончательный Int («SS») значения format.I'm не почему это так, и хотел бы, чтобы ясность была в том, что я делаю неправильно.
Я знаю, что некоторые части этого кода являются излишними, поэтому я полностью открыт и приветствую всю конструктивную критику.
Заранее благодарен!
public static int parseTime(String s) {
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
try{
StringTokenizer st = new StringTokenizer(s,": ");
if(s.contains("day")){
days = Integer.parseInt(st.nextToken());
String throwAway = st.nextToken();// day
throwAway = throwAway.substring(0, throwAway.lastIndexOf(throwAway));
hours = Integer.parseInt(st.nextToken());
throwAway = st.nextToken();//hours
throwAway = throwAway.substring(0, throwAway.lastIndexOf(throwAway));
minutes = Integer.parseInt(st.nextToken());
throwAway = throwAway.substring(0, throwAway.lastIndexOf(throwAway));
seconds = Integer.parseInt(st.nextToken());
throwAway = st.nextToken();
}
}catch(NoSuchElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(NumberFormatException e){
e.printStackTrace();
}
return (days*86400 + hours*3600 + minutes*60 + seconds*1);
}
У тебя ошибка ...? Какая ошибка? – Bart
java.util.NoSuchElementException в java.util.StringTokenizer.nextToken (StringTokenizer.java:332) в ReadIn.parseTime (ReadIn.java:110) в ReadIn.main (ReadIn.java:60) - Просто редактировал сообщение для ясности. –
нет следующего токена, что вы не понимаете об исключении? –