在java中获取0作为数组的和

在java中获取0作为数组的和,java,arrays,Java,Arrays,当我测试我的代码时,我一直得到0作为以下代码的总和和平均值,但它仍然编译。我真的不确定我做错了什么 public class Array { int array[]; int sum; Array(int[] array) { this.array = new int[10]; } public int sum(){ for (int i = 0; i < array.length - 1; i++) sum += sum +

当我测试我的代码时,我一直得到0作为以下代码的总和和平均值,但它仍然编译。我真的不确定我做错了什么

public class Array {
  int array[];
  int sum;

  Array(int[] array) {
    this.array = new int[10];

  }
  public int sum(){
      for (int i = 0; i < array.length - 1; i++)
         sum += sum + array[i];
      return sum;
    }
  public double average() {
      for (int i = 0; i < array.length - 1; i++)
         sum += sum + array[i];
      int average = sum / array.length;
      return average;
  }
}
公共类数组{
int数组[];
整数和;
数组(int[]数组){
this.array=新整数[10];
}
公共整数和(){
for(int i=0;i
问题:

  • 写入的数组只包含零

  • 你的
    sum+=sum+数组[i]不正确。使用
    +=
    或在右侧使用sum并使用
    =
    ,但不能同时使用两者
  • 你的平均数应该将分子或分母转换为双精度,这样你就可以进行双精度除法而不是整数除法
用这个

   Array(int[] array) {
      this.array = array;

   }
把总数改为

  sum = sum + array[i];

  or

  sum += array[i];
应该是:

sum += array[i];
for (int i = 0; i < array.length; i++) {
     // additional logic
}
在for循环中,你不会从长度中减去1,因为你从索引0开始

应该是:

sum += array[i];
for (int i = 0; i < array.length; i++) {
     // additional logic
}
for(int i=0;i
1.Change

Array(int[] array) {
this.array = new int[10];
}

2.改变

 sum += sum + array[i];

3.改变

for (int i = 0; i < array.length - 1; i++)
for(int i=0;i

for(int i=0;i
这里有一些错误

public class Array {
    int array[];
    int sum;

    Array(int[] array) {
        this.array = new int[10];
        // this is write but wrong because if you are getting array of int as an argument then why you are not using it. here you can write like this
       // this.array = array;
    }
    public int sum(){
        for (int i = 0; i < array.length - 1; i++)
            sum += sum + array[i];
            // what is this? completely wrong logic for adding here you can use like this 
            // sum += array[i]   or you can use
            // sum = sum + array[i]
            return sum;
    }
    public double average() {
        for (int i = 0; i < array.length - 1; i++)
            sum += sum + array[i];
            // same mistake again
            // one more point is if you have called sum() function then sum(variable) is already having adding of arrays that time you can not summing up again

            int average = sum / array.length;
            return average;
     }
}
公共类数组{
int数组[];
整数和;
数组(int[]数组){
this.array=新整数[10];
//这是写的,但是错误的,因为如果你得到int数组作为参数,那么为什么你不使用它
//this.array=数组;
}
公共整数和(){
for(int i=0;i
sum+=sum+数组[i]?否。右侧有+=或和,但不是两者都有。另外,sum应该是一个局部变量,而不是一个字段。而且,您从未真正向我们展示初始化数组值的代码。你确定不是全是零吗?使用调试器查找。您的总和将不包括最后一个元素(检查
循环中的条件);此外,每次调用
sum()
时,都会增加类字段的值,因此对于数组
{1,2,3,4}
sum();sum()
将首先返回
10
,然后返回
20
。为了更好地理解,我建议不要调用与类成员相同的构造函数输入参数。可能是“inputArray”或+1,当我们使用它时,不要将类命名为JDK中的类(这也是一个重要的类)
for (int i = 0; i < array.length - 1; i++)
for (int i = 0; i < array.length; i++)
public class Array {
    int array[];
    int sum;

    Array(int[] array) {
        this.array = new int[10];
        // this is write but wrong because if you are getting array of int as an argument then why you are not using it. here you can write like this
       // this.array = array;
    }
    public int sum(){
        for (int i = 0; i < array.length - 1; i++)
            sum += sum + array[i];
            // what is this? completely wrong logic for adding here you can use like this 
            // sum += array[i]   or you can use
            // sum = sum + array[i]
            return sum;
    }
    public double average() {
        for (int i = 0; i < array.length - 1; i++)
            sum += sum + array[i];
            // same mistake again
            // one more point is if you have called sum() function then sum(variable) is already having adding of arrays that time you can not summing up again

            int average = sum / array.length;
            return average;
     }
}