如何在java面向对象编程中使用动态数组?
我尝试使用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)
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];
}