我需要用數字時鐘的所有可能組合(但僅作為 HHMMSS 而不是 HH:MM:SS)填充 Java 中的字串陣列,如下所示:
000000 000001 010000 235903
無效的將是:
240000 000160 006000
等等。
有沒有比將數字從 0 到 999.999 轉換為格式正確的字串(從 000000 到 999999)并洗掉所有無效字串更簡單的方法?
我試圖避免的這種嵌套回圈解決方案:
String[] arr = new String[24 * 60 * 60];
int index = 0;
for (int hours = 0; hours < 24; hours ) {
for (int minutes = 0; minutes < 60; minutes ) {
for (int seconds = 0; seconds < 60; seconds ) {
arr[index] = String.format("ddd", hours, minutes, seconds);
index ;
}
}
}
uj5u.com熱心網友回復:
使用java.time
包:
var formatter = DateTimeFormatter.ofPattern("HHmmss");
var hms = new String[24 * 60 * 60];
for (var i = 0; i < hms.length; i ) {
hms[i] = formatter.format(LocalTime.ofSecondOfDay(i));
}
三個嵌套回圈:
var hms = new String[24 * 60 * 60];
var index = 0;
for (var h = 0; h < 24; h ) {
for (var m = 0; m < 60; m ) {
for (var s = 0; s < 60; s ) {
hms[index ] = String.format("ddd", h, m, s);
}
}
}
單回圈,format
用于以毫秒為單位格式化時間(不確定是否推薦):
var hms = new String[24 * 60 * 60];
for (var i = 0; i < hms.length; i ) {
hms[i] = String.format("%TH%1$TM%1$TS", i * 1000L);
}
uj5u.com熱心網友回復:
嵌套回圈
你知道有二十四小時,從 0 到 23。
你知道有 60 分鐘可能,從 0 到 59。
如果我們忽略閏秒,從 0 到 59 ,還有 60 秒。
你可以設定嵌套for
回圈。典型地,我們經常在每個回圈中使用這些單個字符作為計數器的名稱:i
、j
和k
。但在你的情況下,我世界使用hour
, minute
,的名稱second
。
要最有效地構建文本,請使用StringBuilder
object.
我不會展示實際代碼來為您保留完成自己的功課作業的樂趣。
uj5u.com熱心網友回復:
根本沒有回圈:
java.util.stream.LongStream.
range(0, 24 * 60 * 60).
mapToObj(x -> java.time.LocalTime.ofSecondOfDay(x)).
collect(java.util.stream.Collectors.toList()).
forEach(x -> System.out.println(x.format(java.time.format.DateTimeFormatter.ofPattern("HHmmss"))));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454375.html
下一篇:在建構式中使用陣列部署智能合約