2015-09-27 5 views
3

Я делаю часы в java, и мне приходится печатать 2 цифры для минут и 2 цифры за секунды. Я использую printf, чтобы попытаться напечатать два значения, но я все время получаю сообщение об ошибке «незаконный оператор» или «; expireded». Что я делаю не так?Попытка напечатать 2 цифры секунд и минут с помощью printf, но я продолжаю получать ошибку

Ниже приведен код, который я пытался реализовать, и пока не удалось.

public void printStandard() { 
    int hours; 

    if (hrs < 12) { 
     System.out.printf(hrs + ":" + mins + ":" + %2d + "AM", secs); 
    } else if (hrs > 12) { 
     hours=hrs-12; 
     System.out.printf(hours + ":" + mins + ":" + %2d+ "PM"), secs; 
    } else if (hrs == 12) { 
     System.out.printf(hrs + ":" + mins + ":" + %2d, secs + "PM"); 
    } 
} 

ответ

2
public void printStandard(int hrs, int mins, int secs) { 
if (hrs < 12) { 
    System.out.printf("%02d:%02d:%02d AM%n", hrs, mins, secs); 
} else { 
    System.out.printf("%02d:%02d:%02d PM%n", hrs - 12, mins, secs); 
} 

печати две цифры.

2

Формат входит в двойные кавычки. Вместо

System.out.printf(hrs + ":" + mins + ":" + %2d + "AM", secs) 

Я думаю, что вы хотели что-то вроде

System.out.printf("%02d:%02d:%02d AM%n", hrs, mins, secs); 

Кроме того, я думаю, что вы хотели передать аргументы в ваш метод. И вы можете использовать обычный else. Нечто подобное,

public void printStandard(int hrs, int mins, int secs) { 
    if (hrs < 12) { 
     System.out.printf("%02d:%02d:%02d AM%n", hrs, mins, secs); 
    } else { 
     System.out.printf("%02d:%02d:%02d PM%n", hrs - 12, mins, secs); 
    } 
} 
+0

Корректировки выполнены, и только 1 значение продолжает печатать. Я намеренно не пропустил ничего, потому что создал объект, который использует этот метод для печати. –

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