Java 添加数组元素,直到它达到一个值,当达到该值时,查找索引

Java 添加数组元素,直到它达到一个值,当达到该值时,查找索引,java,arrays,algorithm,sorting,math,Java,Arrays,Algorithm,Sorting,Math,我试图添加数组的元素,直到它达到给定的值x,当达到该值时,tit应该返回该数组的适当索引 ArrayIndex|Value|Running total ------------------------------- 0 | 6 | 6 1 | 1 | 7 2 | 6 | 13 3 | 2 | 15 ArrayIndex |值|运行总计 ------------------------------- 0 |

我试图添加数组的元素,直到它达到给定的值x,当达到该值时,tit应该返回该数组的适当索引

ArrayIndex|Value|Running total ------------------------------- 0 | 6 | 6 1 | 1 | 7 2 | 6 | 13 3 | 2 | 15 ArrayIndex |值|运行总计 ------------------------------- 0 | 6 | 6 1 | 1 | 7 2 | 6 | 13 3 | 2 | 15 如果给定值x是14,它应该返回索引3,或者如果给定值是8,它应该返回2,我该怎么做?有什么算法我可以使用吗

int given_number = 7;
int running_total =0;
for(int x=0;x<array.length;x++)
{
     running_total+=array[x];
     if(given_number>=running_total)
     {
          //only allow once 
          setThredhold(x);//calling a mehod



     }
int给定_数=7;
int running_total=0;
用于(整数x=0;x=running\u总计)
{
//只允许一次
setThredhold(x);//调用方法
}

它非常简单和直接

    int given_number = 7;
    int running_total = 0;
    int array[] = new int[23];
    for (int i = 0; i < array.length; i++) {
        if (running_total >= given_number) {
            break;
        } else {
            running_total += array[i];
        }
    }
}
int给定_数=7;
int running_total=0;
int数组[]=新int[23];
for(int i=0;i=给定数量){
打破
}否则{
运行_total+=数组[i];
}
}
}

您可以为此创建自定义方法:

int findIndex(int[] array, int given_number) {
    int running_total = 0;
    for(int x=0; x < array.length; x++) {
       running_total += array[x];
       if(given_number >= running_total)
          return x;
     }
     return -1; // empty array or given_number is too big
}
int findIndex(int[]数组,int给定的_数){
int running_total=0;
对于(int x=0;x=运行总数)
返回x;
}
return-1;//空数组或给定的_数太大
}

return[x]
是胡言乱语,请尝试
return x
。否则,您给出的代码显然是最好的算法。线性时间和常量空间,我看不出任何人能做得更好。return[x]不编译。你需要重新思考这一行:如果(givenNumber>=runningTotal){应该发生什么,你实际上在检查什么?重复的可能重复?:你不能使用break,因为它永远不会到达break语句,它会在到达它之前退出该方法。当你返回内容时,确保你也在一个方法中。