这只是我正在做的一个面向对象的测试,你能帮我理解如何通过传递对象来设置多维数组值的概念吗?请检查下面的代码;
public class agnts {
private int rate[][] = new int [4][5];
public agnts(){
rate[0][1] = new pric(25);
rate[1][1]=new pric(30);
rate[2][1]= new pric(45);
rate[3][1]=new pric(55);
}
}
class pric {
//int pric [][]= new int [4][5];
int pric;
public pric(int p){
this.pric=p;
}
public int getPric(){
return pric;
}
}
public static void main(String[] args) {
agnts tz= new agnts();
}
我得到一个类型不兼容的错误:int found: price我做错了什么吗?请建议。
你得到一个错误,因为这个
private int rate[][] = new int [4][5];
// You declare a multi-dimensional integer array.
public agnts(){
// you then attempt to assign objects to that array.
rate[0][1] = new pric(25);
rate[1][1]=new pric(30);
rate[2][1]= new pric(45);
rate[3][1]=new pric(55);
}
你声明了一个整数矩阵,但是你用你的price类初始化它。
更新1:正如bmorris591在评论中建议的那样:
public agnts(){
rate[0][1] = new pric(25).getPric();
rate[1][1]=new pric(30).getPric();
rate[2][1]= new pric(45).getPric();
rate[3][1]=new pric(55).getPric();
}
更新2:如果你想为所有矩阵设置随机数:
for (int row = 0; row < rate.length; row ++ )
for (int col = 0; col < col[row].length; ; col ++)
rate[row][col] = (int)(Math.Random()*10+1); // this will generate number between 1 to 10
rate
是一个由整数数组组成的数组:
private int rate[][] = new int [4][5];
所以rate[0][1]
是int
因此,由于它是int
,为它分配pric
的实例是没有意义的:
rate[0][1] = new pric(25);
你可以将它初始化为int型:
rate[0][1] = 25;
或者您可能想要将rate设置为包含price的数组的数组:
private pric[][] rate = new pric[4][5];
注意Java约定告诉类应该以大写字母开头。选择好的名称也会使代码更具可读性。什么是pric
?什么是agnts
?
您已经声明了一个int
数组
private int rate[][] = new int[4][5];
类pric
包含和int
您试图将数组的成员设置为等于new pric(X)
,这与
int i = new pric(X);
如果你看不出有什么问题,那么你可以从这里开始,自己解决。
你在这里调用了price的构造函数:rate[0][1]=new pric(25);
构造函数返回一个price类的对象,但是你想在这个对象上调用getprice ():rate[0][1]=new pric(25).getPric();