2016-10-03 53 views
-2

我無法弄清楚我做錯了什麼。我正在計算輸入字符串中的數字的數量,但例如,如果數字是21,我想將其計爲字符串中的1個輸入數字。Java:計算字符串中整數的數量

到目前爲止,我有以下的,但我不能工作,如何指望它爲1點的整數,而不是2

public static int countIntegers(String input) { 
    int count = 0; 
    for (int i = 0; i < input.length(); i++) { 
     if (Character.isDigit(input.charAt(i))) { 
      count++; 
     } 
    } 
    return count; 
} 

我的問題是我希望它爲字符串,因爲有一定的格式該字符串必須輸入。

+1

你是什麼意思「計爲一個輸入數字」? 「21」不是「數字」,它是一個數字。你究竟想要做什麼?如果要計算字符串中的數字(「23 1234 5」= 3個數字),那完全是另一個問題。 – markspace

+0

好吧,也許我正在想它的方式是錯誤的。例如,輸入的字符串可以是「家,21,汽車,30,公共汽車,13」,計數應該是3,而現在是6。顯然,因爲我在計算數字 – user3411748

+0

你有任何指導你可以給我這個?也許指出我在正確的方向 – user3411748

回答

0

基本上,一個數字 - 數字的連續序列。
所以,算法的思想是計算這樣的序列的數量。

我想提出以下實現的算法:

public static int countIntegers(String input) { 
    int count = 0; 
    boolean isPreviousDigit = false; 

    for (int i = 0; i < input.length(); i++) { 
     if (Character.isDigit(input.charAt(i))) { 
      if (!isPreviousDigit) { 
       count++; 
       isPreviousDigit = true; 
      } 
     } else { 
      isPreviousDigit = false; 
     } 
    } 
    return count; 
} 
+0

謝謝。這正是我想要做的事情,當我嘗試去做時,我只是過分複雜化了。 – user3411748

+0

@ user3411748,歡迎您!很高興它有幫助。 –

0

你想分割輸入,然後檢查每個子字符串是一個整數。

public static int countIntegers(String input) { 
    String[] parsed = input.split(","); // , is the delimiter 
    int count = 0; 
    for (String s : parsed) { 
     if (s.trim().matches("^-?\\d+$")) { // A slow regex method, but quick and dirty 
      count++; 
     } 
    } 

    return count; 
} 

示例輸入:home,21,car,30,bus,13

輸出:3

+0

例如說如果我有一個「家庭,21家庭,汽車,30個總線,13個」的輸入將返回答案爲3仍然? – user3411748

+0

快速測試顯示它返回'0'。 –

+0

我剛剛輸入它,並試圖找出它爲什麼輸出0.確信如果我的代碼是錯誤的。我認爲你的意思是你發佈的代碼輸出0?因爲我的問題似乎是 – user3411748