2016-11-11 55 views
-2

寫一個Java函數count digits(int num);其中num是一個正整數。該函數計算每個數字0..9在num中出現的次數,並打印結果(參見下面的示例)。示例:調用計數位數(347213);將打印以下內容:「數字0 appaeared 0次347213 ....(同用1,2,3).. 允許無輔助/遞歸,僅迭代該數字在整數中出現多少次[Java]

import java.Math.; 

public int count-digits (int num){ 
int count = 0; 
String numF = string.valueOf(num); 
    // We get the number of digits by logs. 
    for(int j=0; j <= 9; j++){ //loop for each digits 
    for(int i=0; i < Math.floor(Math.log10(num)); i++){ //this loops checks each no. 
     if(numF.charAt(j).equals(i)){ 
     count++; 
     } 
     return count; 
     count=0; 
    }  
    } 
} 

兩個。問題:

(1)如何返回字符串旁邊給它

(2)這是否工作是否有一個更好的解決方案

+3

此代碼甚至沒有編譯 –

+0

將您的int轉換爲String,然後使用以下方法:[計算字符串中字符的頻率](http://stackoverflow.com/questions/6712587/counting-frequency-of字符在字符串) – DimaSan

+6

它說「沒有幫手允許」,所以我不會發布答案。 – f1sh

回答

0
public void countDigits(int num) {  
    int count=0; 
    String numF = String.valueOf(num); 

    for (int j = 0; j <= 9; j++) { 
     count=0; 
     for (i = 0; i <numF.length(); i++) { 
      char c = numF.charAt(i); 
      String number=String.valueOf(j); 
      if (c == number.charAt(0)) { 
       count++; 
      } 
     } 
     System.out.println("The number " + j + " appaeared " + count + " times in 347213"); 

    } 
} 
???

這種方法,你得到這樣

The number 0 appaeared 0 times in 347213 
The number 1 appaeared 1 times in 347213 
The number 2 appaeared 1 times in 347213 
The number 3 appaeared 2 times in 347213 
The number 4 appaeared 1 times in 347213 
The number 5 appaeared 0 times in 347213 
The number 6 appaeared 0 times in 347213 
The number 7 appaeared 1 times in 347213 
The number 8 appaeared 0 times in 347213 
The number 9 appaeared 0 times in 347213 

的輸出,你不能用equals比較字符。因此,你需要有2個字符,你可以與==比較,因爲你不能將int轉換爲char你得到一個長度爲1的字符串並取第一個字符。 我希望這我你在找什麼。

+1

代替'對(INT J = 0;Ĵ<= 9; J ++)'我去與'爲(燒焦J = '0';Ĵ<= '9'; J ++)'。不需要做'String number = String.valueOf(j)'然後,就像你可以'if(c == j)' – megaflop

+0

好吧好像工作得很好。不知道有可能迭代char。謝謝你的提示 – XtremeBaumer

+0

是的。 'char'是一個原始類型(只是一個16位有符號整數),所以你可以對它做所有相同的數學運算。只需要記住''0'!= 0'(注意引號)。 – megaflop

相關問題