[英]How do I compare a parameter to elements in an array that are next to it?
我正在为我的 AP 计算机科学课做一个工作表,我遇到了这个问题。
“为 isABeat 方法编写完整的定义。该方法接受一个整数参数并返回它是否为节拍:节拍定义为大于其直接邻居的值。您可以假设第一个和最后一个值不是代表节拍。”
使用这个数组示例:
[4, 5, 7, 10, 9, 5, 0, -2, -8, -10, -10, -7]
这是我的老师给我的工作表的起始代码:
public class EKG {
private int[] beats = new int[6000]; // holds data for each bet every tenth of a second for ten minutes
//constructors, accessors, mutators and toString present but not shown
public void correctBeatData() {}
public boolean isABeat(int spot) {}
public in countBeats() {}
public int averageBPM() {}
public int findNextBeat(int where) {}
public boolean hasArrhythmia() {}
我想,在给定方法: countBeats
和 field: beats
,就可以这样写了:
public boolean isABeat(int spot) {
if(spot < 0 || spot >= beats.length) {
throw new IllegalArgumentException("Argument 'spot' is out of bounds.");
}
if(spot == 0 || spot == beats.length - 1) {
return false;
}
return beats[spot] > beats[spot-1] && beats[spot] > beats[spot+1];
}
这是您的文档解决方案:
public boolean isABeat(int spot) //index would have been a better name just saying.
{
//used this to avoid ArrayOutOfBounds Further down as it will just break when it returns false
if(spot>=beats.length-1||spot<=0) // spot is out of bounds therefore it is false
{
return false;
}
//Makes sure it is greater than both neighbors.
if(beats[spot]>beats[spot-1] && beats[spot] >beats[spot+1])
return true;
else
return false; //if its false
}
逻辑:
它测试点是否出界。如果是,那意味着它绝对不能是一个节拍。 因此,我们通过返回 false 来中断调用(避免在下面的条件中越界)。 接下来,我们检查它的邻居是否都小于现场的值。 如果条件满足,则返回true。 否则,它将返回false。 希望添加的逻辑和代码可以帮助您了解如何使用解决方案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.