我被困在Java的第一个hackerrank挑战中

我被困在Java的第一个hackerrank挑战中,java,arrays,java-8,sum,Java,Arrays,Java 8,Sum,这是一个简单的函数,应该返回数组元素(整数)的和。约束条件是,不应该有负整数,每个元素的值应该小于1000 公共类解决方案{ 静态int simpleArraySum(int[]ar,int arCount){ int res=0; 如果(arCount>=0){ 对于(int i=0;i您将对索引进行求和,而不是对元素进行求和。此外,正如@Saikrishna Rajaraman所提到的,迭代直到arCount独占。因此,在simpleArraySum方法循环更改中: for (int i=

这是一个简单的函数,应该返回数组元素(整数)的和。约束条件是,不应该有负整数,每个元素的值应该小于1000

公共类解决方案{
静态int simpleArraySum(int[]ar,int arCount){
int res=0;
如果(arCount>=0){

对于(int i=0;i您将对索引进行求和,而不是对元素进行求和。此外,正如@Saikrishna Rajaraman所提到的,迭代直到
arCount
独占。因此,在
simpleArraySum
方法循环更改中:

for (int i=0; i < arCount; i++){
    if (ar[i]<1000){
        res += i;
    }
}
for(int i=0;i
  • 您添加的不是数组的值,而是索引。在您的示例中,它是(0+1+2+3+4+5+6)=21
  • for循环从0开始到数组长度,而应该是0到(数组长度-1)1到数组长度
尝试下面的解决方案

  static int simpleArraySum(int[] ar, int arCount) {
  int res=0;

  if(arCount>=0){  //can be ignored
     for (int i=0; i<=arCount-1; i++){
         if (ar[i]<1000){  // can be ignored
         res += ar[i];
         }
      }
   }
  return res;   

  }
static int simpleArraySum(int[] ar) {
    return Arrays.stream(ar).sum();
}
static int simpleArraySum(int[]ar,int arCount){
int res=0;
如果(arCount>=0){//可以忽略
对于(int i=0;i,因为您标记了,我建议使用以下解决方案:

static int simpleArraySum(int[] ar) {// Note: not need to pass the length of the array
    return Arrays.stream(ar)
            .filter(i -> i >= 0 && i < 1000)
            .sum();
}
我还解决了测试,我得到:


现在的其他测试是和

,随着Java中流的可用性,无论何时编写手动循环,您都应该真正考虑是否确实需要。在这种情况下,您可以通过使用一行程序解决方案完全避免问题

  static int simpleArraySum(int[] ar, int arCount) {
  int res=0;

  if(arCount>=0){  //can be ignored
     for (int i=0; i<=arCount-1; i++){
         if (ar[i]<1000){  // can be ignored
         res += ar[i];
         }
      }
   }
  return res;   

  }
static int simpleArraySum(int[] ar) {
    return Arrays.stream(ar).sum();
}

代码越少,出现错误的机会越少,调试时间越短。

res+=arr[i]
为什么标记java-8您想要java-8解决方案吗?还有iSystem.out.println(simpleArraySum(new int[]{1, 2, 3, 4, 10, 11}));//31
static int simpleArraySum(int[] ar) {
    return Arrays.stream(ar).sum();
}