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

问题描述 投票:-1回答:1

我想用用户输入实现一个二维数组。我有一个图书类,它的变量是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
      }
    }

}

希望您的帮助。

java arrays multidimensional-array
1个回答
1
投票

你从来没有声明过数组 歌曲也许你想写

bk[i][j] = ...

现在,你要为每一个人创建一个新的 "书"。名称撒料 的,所以你有两个选择。

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

1
投票

所以你需要的是Book[String name][int price]。这不是二维数组的工作方式。

int l=5;    
Book[][] bk = new Book[l][l];

你要实现的是一个二维图书阵列,可以有25条图书记录,1D图书阵列足以满足你的要求。

public static void main(String[] args){
Scanner in = new Scanner(System.in);
int l = 25;//any size you can have
Book[] bk = new Book[l];
for(int i=0;i<l;i++){
        System.out.println("Enter Song: ");
        String sname = in.next();
        System.out.println("Enter price: ");
        int sprice = in.nextInt();
        Book book = new Book();
        book.setName(sname);
        book.setprice(sprice);
        bk[i]=book;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.