作为对象传递的多维数组



这只是我正在做的一个面向对象的测试,你能帮我理解如何通过传递对象来设置多维数组值的概念吗?请检查下面的代码;

 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();

相关内容

  • 没有找到相关文章