public class Accumulator {
private int[] A;
public Accumulator(int[] X) {
A= new int[X.length];
for (int i=0; i<X.length; i++){
A[i] = X[i];
}
}
public int getOverM(int m){
for(int j=0; j<A.length;j++){
if(m < A[j])
{
}
}
}
public static void main(String args[]){ // you can use the main method to test your code
int[] A = {2,4,3,5,8};
int r=new Accumulator(A).getOverM(3); //change argument to test different cases
System.out.println(r);
}
}
嗨,我一直在研究这个问题已经很久了,我知道这似乎很容易但我只是无法理解它....我只能改变方法getOverM()中的代码,我无法编辑其他方法。 我想过使用if语句,但我只是不知道如何编写一个显示与m相比下一个最大索引号的代码。
问题:考虑以下Accumulator类,该方法缺少代码 &#39; getOverM(int m)&#39;。 getOverM应该返回数组A的第一个元素的索引 值大于或等于m。
如果A中的元素没有索引大于或等于m,那么该方法 应该返回-1。 例如,如果A是数组{2,4,3,5,8}那么 getOverM(3)将返回1 getOverM(2)将返回0 getOverM(7)将返回4 getOverM(20)将返回-1
(提示:数组A的长度由A.length给出)
插入方法getOverM的主体代码。
答案 0 :(得分:1)
您可以像这样返回此索引。
public int getOverM(int m){
for(int j=0; j<A.length;j++){
if(m <= A[j]){
flag=0;
break;
}
else flag=1;
}
if(!flag)
return j;
else return -1;
}
答案 1 :(得分:0)
public int getOverM(int m){
int index = -1;
for(int j=0; j<A.length;j++){
if(m <= A[j])
{
index = j;
break;
}
}
return index;
}
答案 2 :(得分:0)
首先,getOverM()
应返回“index greater 或等于 m”,因此您需要<=
。
否则,您所缺少的只是返回语句:
public int getOverM(int m) {
for(int j = 0; j < A.length; j++)
if (m <= A[j])
return j;
return -1;
}
答案 3 :(得分:0)
我认为这就是你一直在寻找的东西
public int getOverM(int m){
for(int j = 0; j < A.length; j++){
if(m <= A[j]){ //if the current element is greater than or equal to m then return the index .
return j;
}
}
return -1; // return -1 if the loop ends by not finding any element which is greater than or equal to m
}