提问者:小点点

如何在Java中实现二维对象数组


我想使用用户输入实现一个二维数组。 我有一个book类,它需要变量int,price和String name。 要在一个二维数组中存储5本书的信息。 图书类别代码如下

public class Book{
        String name;
        int price;
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getPrice() {
            return price;
        }

        public void setPrice(int price) {
            this.price = price;
        }
}

主类代码

public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    int l = 5;
    Book[][] bk = new Book[l][l];
    for(int i=0;i<l;i++){
      for(int j= 0;j<l;j++){
         //here i want to take user input.
            System.out.println("Enter Song: ");
            String sname = in.next();
            System.out.println("Enter price: ");
            int sprice = in.nextInt();
            song[i][j] = song[sname][price]; //in this line i am getting type error int can't convert to string
      }
    }

}

我希望你的帮助。


共1个答案

匿名用户

您从未声明数组song,也许您想要编写

bk[i][j] = ...

现在您希望为您阅读的每个sNamesprice创建一本新的“书”,因此您有两个选项:

1)在每次迭代中创建一个新的空书

Book tmp = new Book();

然后你定了他的名字和价格

tmp.setName(sname);
tmp.setPrice(sprice);

然后将新书分配给bk的当前元素

bk[i][j] = tmp;

2)向类Book添加一个构造函数,该构造函数以Name和Price为参数

public Book(String n, int p){
    name = n;
    price = p;
}

并将其分配给bk的当前元素

bk[i][j] = new Book(sname, sprice);