[英]Counting instances in Java
因此,我正在為比賽做准備,我似乎無法找出其中的一個實踐問題。我可以導入所有數據。 我了解如何解決這個問題,而不是如何將其放入代碼中。 PS:我在編程方面是新來的。
問題:在一定的時間間隔內,狗吠幾次?
編輯:該程序應該能夠為多只狗工作
給我的東西:
狗的總數。 int numofdog = q.nextInt();
第一個樹皮的時間。
int b = 0;
每個樹皮之間的時間。
int d = 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);
}
}
更新的代碼 (仍在處理)
我也會在這里逐字張貼我的問題,以便我們所有人都可以理解
狗飼養員鮑勃(Bob Breeder bob),想知道在特定時間間隔內他的狗吠了幾下
輸入。 輸入的第一行將是單個int numofdog
,即bob擁有的狗的數量。 接下來的numofdog
行將分別由兩個整數組成:b和d。 b
是第一個樹皮的時間, d
是兩次樹皮之間的時間。 的下一行是一個整數numberofintervals
。 下一個numberofintervals
行將由兩個整數x
和y
。 x
是要測量的間隔的開始, y
是結束
輸入示例
2-numofdogs
0 4-狗1的b和d
2 5-狗2的b和d
1 ---正在測量的間隔數
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);
}
}
我編寫了一個新代碼,您正在考慮2條狗,如果有3條或3條以上,那么您的代碼將無法工作,因此數組是解決此問題的方法。
每只狗都有自己的b
, d
變量。 用超過2只狗測試它,看看會發生什么。 如果發生任何錯誤,只需將其發布,我會對其進行檢查。
您的for循環並不是最佳選擇,因為您將0作為間隔開始,而不是x
和y
(開始和結束)間隔。
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.