如何在java面向对象编程中使用动态数组?

如何在java面向对象编程中使用动态数组?,java,arrays,oop,dynamic,average,Java,Arrays,Oop,Dynamic,Average,我尝试使用Java编程语言创建一个程序,该程序可以使用面向对象编程概念计算输入的平均值。当我使用一个静态数组时,程序运行良好,但当我试图设置数组为动态数组时,程序会出错。如何使用面向对象编程概念动态设置数组 这是带有静态数组的程序: public class Avg { private int n; private int[] value = new int[3]; public int getN() { return n; } public void setN(int n)

我尝试使用Java编程语言创建一个程序,该程序可以使用面向对象编程概念计算输入的平均值。当我使用一个静态数组时,程序运行良好,但当我试图设置数组为动态数组时,程序会出错。如何使用面向对象编程概念动态设置数组

这是带有静态数组的程序

public class Avg {

private int n;

 private int[] value = new int[3];

public int getN() {
    return n;
}

public void setN(int n) {
    this.n = n;
}

public int getValue(int number) {
    return this.value[number];
}

public void setValue(int number, int value) {
    this.value[number] = value;
}        

public double getAverage(){
    int i = 0;
    double total = 0;
    for(i=0;i<getN();i++){
        total = total+value[i];
    }
    return (total/getN());
}

   public double getAverage(){
    int i = 0;
    double total = 0;
    for(i=0;i<3;i++){
        total = total+value[i];
    }
    return (total/3);
    }

import java.util.*;
public class driver {
public static void main(String[] args) {
    Avg klas = new Avg();
    int i,number = 0, value = 0;        
    Scanner prak = new Scanner(System.in);
    System.out.println("enter the number of sequence :");        
    int n = prak.nextInt();
    for(i=0;i<n;i++){
            System.out.println("sequence of : " + (i+1));                 
            System.out.println("enter the value : ");                                
             value = prak.nextInt();
    }
    klas.setValue(number, value);  
    System.out.println(klas.getAverage());
}
}
public class Avg {            
private int n;

private int[] value = new int[getN()];


public int getN() {
    return n;
}

public void setN(int n) {
    this.n = n;
}

public int getValue(int number) {
    return this.value[number];
}

public void setValue(int number, int value) {
    this.value[number] = value;
}        

public double getAverage(){
    int i = 0;
    double total = 0;
    for(i=0;i<getN();i++){
        total = total+value[i];
    }
    return (total/getN());
} 

import java.util.*;
public class driver {
public static void main(String[] args) {
    Avg klas = new Avg();
    int i,number = 0, value = 0;        
    Scanner prak = new Scanner(System.in);
    System.out.println("enter the number of sequence :");
    klas.setN(prak.nextInt());         
    for(i=0;i<klas.getN();i++){
            System.out.println("sequence of : " + (i+1));                 
            System.out.println("enter the value : ");                                
             value = prak.nextInt();
    }
    klas.setValue(number, value);  
    System.out.println(klas.getAverage());
}
}
但当使用静态数组时,程序运行良好:

enter the number of sequence :
3
sequence of : 1
enter the value : 
4
sequence of : 2
enter the value : 
5
sequence of : 3
enter the value : 
3
1.0 
如何在JavaOOP中使用动态数组


初始化
n
后,需要初始化
数组。 您可以这样做:

private int[] value;

public void setN(int n) {
   this.n = n;
   values = new int[n];
}
更安全的方法是定义一个接受
n
值作为参数的构造函数

private int[] value;

public Avg(int n){
   this.n = n;
   values = new int[n];
}

它起作用了!谢谢你,提图斯。但是,我可以问你们一个问题,如何得到输入的平均值。我以前使用过这个函数,但它没有返回平均值:public int getAverage(){int i=0;int total=0;for(i=0;i@MuhammadFadliFaturzaman由于
数组大小可以是
3
以外的值,因此在
getAverage()中
方法,您应该用
值替换
3
。length
@muhammaddfadlifatartzaman它应该是'total=total+getValue(i);'而不是'total=getValue(i)+getValue(i);'done,但仍然不返回平均值'public int-getAverage(){int i=1;int-total=0;for(i=0;i@MuhammadFadliFaturzaman您需要将此
klas.setValue(number,value);
移动到
for
循环(末尾)的
klas.setValue(i,value);
private int[] value;

public Avg(int n){
   this.n = n;
   values = new int[n];
}