我被困在Java的第一个hackerrank挑战中
这是一个简单的函数,应该返回数组元素(整数)的和。约束条件是,不应该有负整数,每个元素的值应该小于1000我被困在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=
公共类解决方案{
静态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();
}