2015-12-31 41 views
2

我想做出讓這對19:49應該包含如何將日期轉換爲int數組?

hours[0] = 1 
hours[1] = 9 
minutes[0] = 4 
minutes[1] = 9 

問題hoursminutes陣列是,當我執行代碼:

Calendar rightNow = Calendar.getInstance(); 
String hour[] = String.valueOf(rightNow.get(Calendar.HOUR_OF_DAY)).split(""); 
String minute[] = String.valueOf(rightNow.get(Calendar.MINUTE)).split(""); 

,當我打印此

System.out.println(hour[0] + ""+hour[1] + ":" + minute[0] +""+minute[1]); 

我有這個輸出1:4,但它應該是19:49

更新:我使用1.7 JDK並形成我所看到的hour[2]包含9minute[2]9

+3

工作正常,我。投票結束是不可重複的。 –

+1

另外,這是一個'String'數組。 –

+0

@SotiriosDelimanolis我猜你正在使用Java8? Java8忽略了第一場比賽前的空字符串。 Java7沒有,這就是爲什麼一些數字不存在(索引0是空字符串,索引1是第一個數字)。但是因爲我正在接電話,所以我不能寫出正確的答案。 – Tom

回答

0

嗯,我猜你在找什麼東西像這樣

int[] hour = new int[2]; 
    int[] minute = new int[2]; 

    Calendar rightNow = Calendar.getInstance(); 

    int tempHour = rightNow.get(Calendar.HOUR_OF_DAY); 
    int tempMin = rightNow.get(Calendar.MINUTE); 

    hour[0] = (int)Math.floor(tempHour/10); 
    hour[1] = tempHour%10; 

    minute[0] = (int)Math.floor(tempMin/10); 
    minute[1] = tempMin%10; 

    System.out.println(hour[0] + "" + hour[1] + ":" + minute[0] + "" + minute[1]); 
+0

沒有我想有數組int小時[]和數組int分鐘[] 和當我們有10:31數組我應該有 小時[0] = 1 小時[1] = 0 分鐘[0] = 3 分鐘[1] = 1 – Larry

+0

好吧,我會編輯,按住 –

+0

編輯。看一下這個。如果有任何解釋需要隨時問) –

2

問題在前期的Java-8是,當我們split(delimiter)串像

delimiter[Data]delimiter[Data]delimiter[Data] 

,我們將得到的結果數組

"", "[Data]", "[Data]", "[Data]" 

在你的情況分隔符是空字符串""和空字符串不僅存在於字符之間,還存在於字符串的開始和結尾。

爲了解決這個問題,你可以使用split("(?!^)"),它會在每個地方分割,只要它沒有字符串開始(^)(它排除了文本開始處的空字符串)。

在Java 8這種行爲改變:Why in Java 8 split sometimes removes empty strings at start of result array?