2013-06-20 111 views
1

在我的程序中,我需要從字符串中提取數字,給定的字符串如下所示。我需要從Java中提取字符串中的數字

String numberOfHours = "12.0 8.0 7.0 7.0 10.0 8.0 0.0 2.0"; 

我需要將每個值提取到一個數組中。當我使用String類中的split方法時,我得到一個空值並且我也沒有得到數組中的所有數字。這是代碼。

String pieces[] = numberOfHours.split(" "); 

    for(int i = 0 ; i < hoursPerDay.length ; i++){ 
      System.out.println(pieces[i]); 
    } 

在此先感謝!

+0

使用量詞 - '分裂( 「\\ S +」)' –

+4

爲什麼你遍歷'hoursPerDay'長度,以及訪問'pieces'數組的索引? –

+0

我的不好,那是我正在試驗的一段舊代碼。 srry。分裂(「\\ s +」)工作完美。非常感謝! Hey MaQy,你是對的!那就是問題 – dimlo

回答

4

此:

String numberOfHours = "12.0 8.0 7.0 7.0 10.0 8.0 0.0 2.0"; 
String pieces[] = numberOfHours.split("\\s+"); 
System.out.println(pieces.length); 

打印: 「8」。這是你在找什麼?

+0

是的,先生,非常感謝! – dimlo

+0

不客氣,但請按照Rohit Jain的建議修復代碼。你不想循環到hoursPerDay.length,是嗎? ;-) pieces.length就足夠了。 – Paolof76

+0

@Dimlo - 如果這是你的問題的正確答案,你能否接受它。 – selig

0
public static void main(String[] args){ 
    String numberOfHours = "12.0 8.0 7.0 7.0 10.0 8.0 0.0 2.0"; 
    String pieces[] = numberOfHours.split("\\s+"); 
    int num[] = new int[pieces.length]; 
    for(int i = 0; i < pieces.length; i++){ 
     //must cast to double here because of the way you formatted the numbers 
     num[i] = (int)Double.parseDouble(pieces[i]); 
    } 
    for(int i = 0; i < num.length; i++){ 
     System.out.println(num[i]); 
    } 
} 
+0

這將拆分數組,並將數字字符串轉換爲int,因爲它將它們放入int數組中。它會輸出你想要的東西,我測試過它 – sunrize920