0

它只是我正在做的一个 OOP 测试,请你帮助我理解如何通过传递对象来设置多维数组值的概念。请检查以下代码;

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

我收到类型不兼容的错误 required:int found:pric 我做错了吗?请指教。

4

4 回答 4

2

因此,您会遇到错误

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

您声明了整数矩阵,但您正在使用您的价格类对其进行初始化..

更新 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
于 2013-04-09T21:43:45.200 回答
0

你已经声明了一个数组int

private int rate[][] = new int[4][5];

你有pric一个包含int.

您正在尝试将数组的成员设置为等于new pric(X),这与

int i = new pric(X);

如果您看不出有什么问题,那么也许可以从这里开始并逐步解决。

于 2013-04-09T21:46:25.480 回答
0

您在这里调用 pric 的构造函数: rate[0][1]=new pric(25);

构造函数返回一个类 pric 的对象,但你想调用 getPric() 来代替: rate[0][1]=new pric(25).getPric();

于 2013-04-09T21:46:30.140 回答
0

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 :

private pric[][] rate = new pric[4][5];

请注意,Java 约定告诉类应该以大写字母开头。选择好的名称也使代码更具可读性。什么是pric? 什么是agnts?

于 2013-04-09T21:45:33.900 回答