#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. Спасибо! Это имеет смысл. Я был близок, но просто неуместно расставил символы.