2013-12-18 4 views
2

Я пытаюсь распечатать окончательное время гонки в строку, поэтому у меня есть свой объект гонки со строковым свойством fastestTime в формате Minutes: Seconds.Milliseconds (т.е. «1 : 15,36").Строки, которые не совпадают

В моем классе Race:

public String getFastestTime() { 
    if(fastestTime != null) 
     return fastestTime; 
    else 
     return "Unknown"; 
} 

В моей главной:

System.out.println("The fastest time was " + race.getFastestTime() + " by " + race.getWinner()); 

По какой-то причине, только часть его распечатки все, после того, как "по". Вся первая часть удаляется из печати, и я действительно не знаю, почему.

Если бы я только сделать:

System.out.println("The fastest time was " + race.getFastestTime()); 

Он печатает отлично.

У кого-нибудь есть идеи?

ОБНОВЛЕНИЕ:

Уточнено! Похоже, мне пришлось обрезать строку после, спасибо всем за вашу помощь, я очень ценю это!

+1

«Самое быстрое время было» не печатается? –

+0

Правильно, только то, что приходит после того, где должно быть время. – user2316901

+1

Какие символы в строке возвращаются 'race.getFastestTime()'? Есть ли вероятность, что он содержит escape-последовательность ANSI? –

ответ

6

Похоже, что race.getWinner() возвращает возвращаемый символ \r как часть его строки и, следовательно, перезаписывает все предыдущее.

Try дезинфицирующим race.getWinner() перед печатью, используя нечто вроде:

race.getWinner().replaceAll("\\r",""); 

или:

race.getWinner().trim(); 
2

Возможно есть возврат каретки (\r) в конце fastestTime. Сделайте fastestTime.trim().

Смежные вопросы