2012-09-15 43 views
-14

我想用JAVA編寫一個程序,在這個程序中,我必須找出給定序列中出現8次的次數。查找1到100之間有多少個8?

ex: 1至100我們會發現有多少個8?

即8,18,28,38,48,58,68,78,80,81,82,83,84,85,86,87,88,89,98?

20倍

+14

1.這是公然作業。 2.你甚至沒有試圖自己寫 - StackOverflow不只是爲你做你的工作。 – Hbcdev

+0

找到你想要的邏輯是什麼? – basiljames

+1

正如你所看到的,每個人都可以用不同的邏輯給你一個工作解決方案。你應該首先考慮一個邏輯然後實現它。 – basiljames

回答

1

我不會給你的代碼,因爲你不會通過模仿來學習其他人的編寫自己的代碼。取而代之的是,這裏有一些提示,以幫助你把它寫自己

  • 使用for循環來通過數字,

  • Integer.toString()

  • '8'字符。

(還有其他方法可以做到這一點...)

+2

刪除作業標籤後,Mods正在尋找完整的答案,而不是提示。檢查了這一點:http://meta.stackexchange.com/questions/147100/trogdor-ate-my-homework-tag –

+4

作爲一個人1)一直參與教人們編程,2)必須與人打交道在那些無法用溼紙袋編程的採訪中,我不同意這種觀點,即我們應該通過給學生提供完整的編程練習解決方案來「幫助」學生。 –

+0

我完全同意你的看法。 –

1

只是爲了展示如何給別人的代碼不會幫你了...

你缺少一個八。 ;)

String s‮ = ""; 
for (int i‮ = 1; i‮ <= 100; i‮++) s‮ += i‮; 
/*‮*/System.out.println("There are " + (s‮.split("8").length - 1) + " eights"); 

打印

There are 20 eights 

你需要學習如何爲自己做到這一點。

+0

這個問題很糟糕。目前還不清楚是否它們中包含「8」的數字的計數或數字中的「8」的計數。 IOW:目前還不清楚是否數一次或兩次「88」。 –

+0

多少8順序,即8,18 ... 88,98是的,你必須計數8兩個在88 –

+1

他錯過了80 ... –

5
public static int count8(int from, int to) { 
    int count = 0; 
    for (int i = from; i <= to; i++) { 
     int j = i; 
     while (j > 0) { 
      if (j % 10 == 8) 
       count++; 
      j /= 10; 
     } 
    } 
    return count; 
} 

調用方法:

count8(1, 100); >>> 20 
+0

我建議你試試這個,因爲它不是解析字符串。你可以通過你想要檢查的範圍。 –

-1
StringBuffer sb = new StringBuffer(); 
    for(int i=0; i<=100; i++){ 
     sb.append(i); 
    } 
    System.out.println(StringUtils.countMatches(sb, "8"));  

彼得Lawrey的可讀形式的代碼,

public static void main(String[] args){ 
    String str = ""; 
    for(int i=0; i<=100; i++){ 
     str += i; 
    } 
    System.out.println((str.split("8").length) - 1); 
}