2014-11-23 65 views
1

因此,我正在爲比賽做準備,我似乎無法弄清楚其中一個練習題。我導入了所有數據。我明白如何解決我腦海中的問題,而不是如何將它放入代碼中。附:我在編程方面很新穎。在Java中計數實例

問題:狗在某段時間內吠叫多少次?

編輯:該程序應能夠爲多個狗

事情給我的工作:

  1. 狗的總數。 int numofdog = q.nextInt();

  2. 第一次樹皮的時間。

    int b = 0; 
    
  3. 每個樹皮之間的時間。

    int d = 4; 
    
  4. 用於計算樹皮數量的時間段。 4 - 10

因此,例如,只有1只狗。狗首先在0,然後在4,然後在8 ..等等。我計算的時間間隔是4-10。所以狗狗在4和8叫。所以總共狗在4 - 10期間吠叫2次。

我不知道如何繼續解決這個問題。

原始代碼

import java.io.*; 
import java.util.*; 

public class dog { 

public static void main(String[] args) { 

    int b = 0; 
    int d = 0; 
    int x = 0; 
    int y = 0; 
    int count = 0; 
    int m =0; 
Scanner q = new Scanner(System.in); 

int numofdog = q.nextInt(); 

while (numofdog-->0) { 

    b = q.nextInt(); // First Bark 
    d = q.nextInt(); // Time between barks 
    x = q.nextInt(); // Starting of interval 
    y = q.nextInt(); // Ending of interval  





int time [] = new int[y];    // Make an array 
for (int a = 0; a < time.length; a++) { 
    time[a] = a + 1; 

    if (time [a] % d == 0) { 

     count ++; 
     } 
    } 
} 


System.out. println(count); 
} 

} 

更新的代碼(仍在開發中)

我會通過文字在這裏發佈我的問題一句話也使我們大家都可以理解

狗飼養員鮑勃,想知道他的狗在特定時間間隔內多少次吠叫

輸入。輸入的第一行將是一個單一的int numofdog,這是dog bob擁有的數量。下一個numofdog行將分別由兩個整數組成:b和d。 b是第一次樹皮的時間,d是樹皮之間的時間。下一行是一個整數numberofintervals。接下來的numberofintervals行將由兩個整數組成,xyx正在被測量的時間間隔的開始和y是結束

示例輸入

2 --- numofdogs

0 4 --- b和d爲1狗

2 5 --- b和d爲狗2

1 ---間隔NUM被測量

4 8 --- x和y間隔。

import java.io.*; 
import java.util.*; 

public class dog { 

public static void main(String[] args) { 

    int b1 = 0; 
    int b2 = 0; 
    int d1 = 0; 
    int d2 = 0; 
    int x1= 0; 
    int y1= 0; 
    int x2= 0; 
    int y2= 0; 
    int count = 0; 


Scanner q = new Scanner(System.in); 

int numofdog = q.nextInt(); 

while (numofdog-->0) { 

    b1 = q.nextInt(); // First Bark (Dog 1) 
    d1 = q.nextInt(); // Time between barks (Dog 1) 
    b2 = q.nextInt(); // First Bark (Dog 2) 
    d2 = q.nextInt(); // Time between barks (Dog 2) 

} 

    int numberofintervals = q.nextInt(); 

    while (numberofintervals -->0) { 
    x1 = q.nextInt(); // Starting of interval 
    y1 = q.nextInt(); // Ending of interval 
    x2 = q.nextInt(); // Starting of interval 
    y2 = q.nextInt(); // Ending of interval 

    } 

int time [] = new int[10000];    // Make an array, to represent time 
for (int a = 0; a < time.length; a++) { 
    time[a] = a + 1; 

    if (time [a] % d1 == 0 || time [a] % d2 == 0) { 

     count ++; 
     } 

    } 
System.out.println(count); 
} 



} 
+3

你快到了。現在你需要計算狗吠聲的次數。我建議先用一支鉛筆和一張紙來設計算法(這也可能涉及到數學運算),然後將其轉化爲代碼。如果您的具體問題是關於如何將算法轉換爲代碼,請提供您的算法,我們將爲您提供幫助。 – 2014-11-23 17:10:05

+0

另請參見:http://en.wikipedia.org/wiki/Modulo_operation – atok 2014-11-23 17:23:05

+0

我不確定該從哪裏出發。這種新的。我在嘗試比較數組時遇到錯誤。 – f6e9a 2014-11-23 18:19:28

回答

1

我做了一個新的代碼,你想約2狗,如果有3種以上的狗,那麼你的代碼將無法正常工作,所以數組是解決這個問題。

每隻狗都有它自己的bd變量。用超過2只狗測試它,看看會發生什麼。如果發生任何錯誤,只需發佈​​它,我會檢查它。

您的for循環並不是最優的,因爲您將0作爲間隔開始,而不是您的xy(開始和結束)間隔。

import java.io.*; 
import java.util.*; 

public class NumberOfBarksTest { 
    public static void main(String[] args) { 
     int numOfDog = 0; 
     int b[] = new int[10]; //1st bark 
     int d[] = new int[10]; //time between barks 
     int numberOfIntervals = 0; 
     int x[] = new int[10]; //start of interval 
     int y[] = new int[10]; //end of interval 
     int barks[] = new int[10]; 
     int totalBarks = 0; 
     Scanner q = new Scanner(System.in); 

     for(int i = 0; i < 10; i++) { 
      barks[i] = 0; 
     } 

     numOfDog = q.nextInt(); 

     for(int i = 0; i < numOfDog; i++) { 
      b[i] = q.nextInt(); 
      d[i] = q.nextInt(); 
     } 

     numberOfIntervals = q.nextInt(); 

     for(int i = 0; i < numberOfIntervals; i++) { 
      x[i] = q.nextInt(); 
      y[i] = q.nextInt(); 
     } 

     for(int dog = 0; dog < numOfDog; dog++) { 
      for(int i = x[dog]; i <= y[dog]; i += d[dog]) { 
       barks[dog]++; 
      } 
     } 

     for(int i = 0; i < numOfDog; i++) { 
      System.out.println("Barks for dog " + i + ": " + barks[i]); 
      totalBarks += barks[i]; 
     } 
     System.out.println("Total barks: " + totalBarks); 
    } 
} 
+0

THANKKKKKK YOOUU !!!!!!!!我理解你的邏輯,這是有道理的。 – f6e9a 2014-11-25 18:59:44

+0

很高興幫助。下次嘗試在紙上做3個或更多的例子,把你的邏輯放在那裏,將你的邏輯轉換成代碼更容易。 – Frakcool 2014-11-25 19:01:40