Как отобразить длину в минутах и секундах с начальным нулем с помощью printf()

#java #printf

#java #printf

Вопрос:

Я работаю над своей второй Java-программой. Я создаю класс под названием Song и основной класс для тестирования класса Song. Моя проблема заключается в моем методе public void songDisplay() , расположенном в классе Song. Назначение требует, чтобы я вычислял length в min и sec с использованием / % операторов и и выводил с использованием printf() при отображении начального нуля в течение секунд менее 10. Я пытался найти, как это сделать, и потерпел неудачу. Любая помощь будет оценена!

Примером того, что я хочу сделать, может быть для моего метода в основном файле класса my method testdisplaymethod(title3) вывод должен выглядеть следующим образом "Blue Canadian Rockies" (The Byrds) 2:02 .

Класс песни

 public class Song {
    
    //declares private variables
    private String title;
    private String artist;
    private int length;
            
    public Song(String songTitle,String songArtist,int songMin,int songSec){
        this.title = songTitle;
        this.artist = songArtist;
        this.length = (songMin * 60)   songSec;
        }
     public Song(){
        title = "untitled";
        artist = "unknown";
        length= 0;
     }

    //accessors
    public String getTitle(){
        return this.title;
    }
    public String getArtist(){
        return this.artist;
    }
    public int getLength(){
        return this.length;
    }

    //mutatators
    public void setTitle(String songTitle){
        this.title = songTitle;
    }
    public void setArtist(String songArtist){
        this.artist = songArtist;
    }
    public void setLength(int songLength){
        this.length = songLength;
    }
    public void songdisplay(){
        System.out.printf(""%s",(%s),", title, artist, length);
        System.out.println();
    }
}
 

Основной файл класса для тестирования класса песни

 public static void main(String[] args) {
        
        // creates a default object to test default constructor
        Song title1 = new Song();
        testdefaultconstructor(title1);
       
        // creates a an object to test accessor/mutator methods
        Song title2 = new Song("For What It's Worth", "Buffalo Springfield",2,37
        );
        testfourparamconstructor(title2);
        
        //tests the display method
        Song title3 = new Song("Blue Canadian Rockies", "The Byrds", 2,2);
        testdisplaymethod(title3);
    }
    // tests the defaul constructor
    public static void testdefaultconstructor(Song title1){
        System.out.println("Testing default constructor");
        System.out.println("Title: "  title1.getTitle());
        System.out.println("Artist: "   title1.getArtist());
        System.out.println("Length "  title1.getLength());
        System.out.println();
    }
    public static void testfourparamconstructor(Song title2){
        System.out.println("Testing four-paramameter constructor");
        System.out.println("Title: "  title2.getTitle());
        System.out.println("Artist: "   title2.getArtist());
        System.out.println("Length "  title2.getLength());
        System.out.println();
    }
    public static void testdisplaymethod(Song title3){
        System.out.println("Testing Display Method");
        title3.songdisplay();
    }
}
 

Ответ №1:

Для указания двух цифр с начальными нулями указан формат d . Изменить

 System.out.printf(""%s",(%s),", title, artist, length); // <-- missing a format
System.out.println();
 

Для

 System.out.printf(""%s", (%s), %d:d%n", title, artist,
        length / 60, length % 60);
 

Комментарии:

1. Спасибо! Это имеет смысл. Я был близок, но просто неуместно расставил символы.