所以,我正在准备比赛,我似乎无法弄清楚其中一个练习问题。我得到了导入所有数据。我理解如何在脑海中解决问题,而不是如何将其置于代码中。附:我是编程新手。
问题:一只狗在特定时间间隔内吠多少次?
编辑:该程序应该可以为多只狗工作
给我的东西:
狗的总数。 int numofdog = q.nextInt();
第一次吠叫的时间。
int b = 0;
每次吠叫之间的时间。
int d = 4;
计算树皮数量的时间段。 4 - 10
所以例如,只有一只狗。狗首先吠叫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);
}
}
更新代码(仍在处理)
我会在这里逐字逐句地发布我的问题所以我们所有人都能理解
Dog Breeder bob,想知道他的狗在一定时间间隔内吠叫了多少次
输入。输入的第一行将是单个int numofdog
,狗的数量为bob。下一行numofdog
行将包含两个整数:b和d。 b
是第一次树皮的时间,d
是树皮之间的时间。下一行是单个整数numberofintervals
。下一个numberofintervals
行将包含两个整数x
和y
。 x
是测量间隔的开始,y
是结束
示例输入
2 --- numofdogs
0 4 --- b和d为狗1
2 5 --- b和d为狗2
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);
}
}
答案 0 :(得分:1)
我制作了一个新的代码,你在考虑2只狗,如果有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);
}
}