Ing artikel iki aku arep ngomong babagan kelas
MessageFormat
sing digunakake ing tugas 2412 (task2412). Kelas kasebut MessageFormat
dirancang kanggo nggawe senar. Kelas Java iki njupuk sakumpulan obyek, ngowahi format, banjur nglebokake strings sing diformat menyang cithakan ing lokasi sing cocog. Iki minangka alternatif (utawa malah tambahan) kanggo metode statis String.format
. Pisanan, conto prasaja nggunakake kelas Jawa iki tanpa nggawe obyek, nanging nggunakake cara statis:
int planet = 7;
String event = "a disturbance in the Force";
String result = MessageFormat.format(
"At {0, time, medium} on {0, date}, there was {1} on planet {2, number, integer}.",
new Date(), event, planet);
System.out.println(result);
Ing kene cara statis diarani MessageFormat.format
, sing cithakan senar lan, nyatane, obyek sing bakal dilebokake ing papan sing diwatesi kurung diterusake minangka argumen {}
. Posisi obyek diwiwiti ing ditemtokake ing kurung 0
, uga jinis format, yen ana. Output bakal kaya iki:
At 21:25:54 on 28 апр. 2018 г., there was a disturbance in the Force on planet 7.
Conto ing ngisor iki wis nggawe obyek saka kelas MessageFormat
:
int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {fileCount, diskName};
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
Nalika obyek kelas digawe, MessageFormat
cithakan senar diterusake menyang konstruktor. Sabanjure, nalika nelpon cara format
ing obyek, Uploaded saka obyek sing bakal dilebokake ing cithakan string liwati ana minangka pitakonan. Output bakal kaya iki:
The disk "MyDisk" contains 1 273 file(s).
Sampeyan uga bisa nggawe manawa teks sing dibutuhake dipilih gumantung saka nilai variabel. A jenis implementasine saka operator if...else
, mung nggunakake kelas ChoiceFormat
. Iki kode:
MessageFormat form = new MessageFormat("Я могу {1} {0}.");
int count = 2;
String exercise = "подтянуться";
Object[] testArgs = {count, exercise};
double[] filelimits = {0,2,5};
String[] filepart = {"{0} раз","{0} раза","{0} раз"};
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
form.setFormatByArgumentIndex(0, fileform);
System.out.println(form.format(testArgs));
Kode iki, gumantung saka nilai variabel, count
ngganti output baris kaya ing ngisor iki:
-
yen
count = 1
kesimpulane kaya kiyeЯ могу подтянуться 1 раз.
-
yen
count = 2
kesimpulane kaya kiyeЯ могу подтянуться 2 раза.
-
yen
count = 7
kesimpulane kaya kiyeЯ могу подтянуться 7 раз.
double[] filelimits
sing nemtokake watesan nilai ing ngendi output string bakal diganti. Lan array String[] filepart
nuduhake varian banget saka strings sing bisa digunakake. Kahanan kanggo milih pilihan baris saka nilai variabel ditemtokake minangka nderek: opsi bakal dipilih filepart[j]
yen filelimits[j] =< count < filelimits[j+1]
. Sabanjure, obyek digawe lan susunan lan ChoiceFormat fileform
diterusake menyang konstruktor . Kanthi metode kasebut, kita ngandhani obyek yen metode kasebut diarani , banjur kanggo indeks 0 ing cithakan baris, gunakake format sing ditemtokake ing obyek kasebut . nggih. Ing asas, sampeyan bisa uga wis duwe idea ora tau nggunakake kelas Jawa , nanging ngerti sing iki ora kabeh lonceng lan whistles. Ana kode iki: double[] filelimits
String[] filepart
form.setFormatByArgumentIndex(0, fileform)
MessageFormat form
format
ChoiceFormat fileform
MessageFormat
MessageFormat pattform = new MessageFormat("There {0} on {1}.\n{2} {2}");
int count = 0;
Date date = new Date();
Object[] testArgs = {count, "ADisk", date, date};
double[] filelimits = {0,1,2};
String[] filepart = {"are no files","is one file","are {0} files"};
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
Format[] testFormats
= {fileform, null, DateFormat.getDateInstance(DateFormat.SHORT), DateFormat.getTimeInstance(DateFormat.SHORT)};
pattform.setFormats(testFormats);
System.out.println(pattform.format(testArgs));
Punika fitur utama ing array Format[] testFormats
. Ing array iki kita nambah obyek (ngleksanakake kelas abstrak Format
) sing tanggung jawab kanggo ngowahi format obyek sing ditetepake ing array Object[] testArgs
. Format[] testFormats
Yen obyek ora perlu format, banjur null
. pattform.setFormats(testFormats)
Sabanjure, kita nggunakake cara kanggo ngandhani obyek MessageFormat pattform
yen kabeh indeks ing pola baris kudu nggunakake format sing ditetepake ing array Format[] testFormats
. Kanggo conto iki, output bakal dadi:
There are no files on ADisk.
28.04.18 22:10
Iku kabeh, lan muga-muga sampeyan ora bakal ngalami kesulitan nalika ngrampungake masalah 2412.
GO TO FULL VERSION