繁体   English   中英

如何将参数与其旁边的数组中的元素进行比较?

[英]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]
  • isABeat(3) 返回真,
  • isABeat(9) 返回 false。

这是我的老师给我的工作表的起始代码:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM