Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将一些值加载到对象数组的实例中?_Java - Fatal编程技术网

Java 如何将一些值加载到对象数组的实例中?

Java 如何将一些值加载到对象数组的实例中?,java,Java,我正在做一些我在网上找到的练习,试图理解OOP等等,我的问题如下,我有两个类,主要是一个叫做Book的类和一个叫做Author的类 作者拥有3个属性: 字符串名称、字符串电子邮件和字符性别。 本书共有4本: 字符串书名 作者[]作者 双倍价格 整数数量 我的问题是,既然我没有也不明白Author[]应该是什么意思,那么存储多个图书作者的对象数组是什么呢?如果是这样的话,我应该如何在主类上继续,我应该创建一个对象Author[]的实例,并使用for循环开始给他赋值吗?例如,author1[]中该对

我正在做一些我在网上找到的练习,试图理解OOP等等,我的问题如下,我有两个类,主要是一个叫做Book的类和一个叫做Author的类

作者拥有3个属性: 字符串名称、字符串电子邮件和字符性别。 本书共有4本: 字符串书名 作者[]作者 双倍价格 整数数量

我的问题是,既然我没有也不明白Author[]应该是什么意思,那么存储多个图书作者的对象数组是什么呢?如果是这样的话,我应该如何在主类上继续,我应该创建一个对象Author[]的实例,并使用for循环开始给他赋值吗?例如,author1[]中该对象的值name、email、gender是如何存储的?我应该如何将值加载到该对象数组中

试着自己学习java

public class Book {
    protected static final int QTY_DEF = 0;
    private String name;
    private Author[] authors;
    private double price;
    private int qty;
        public Book(String name, Author[] authors, double price, int qty) {
        this.name = name;
        this.authors = authors;
        this.price = price;
        this.qty = qty;
    }

    }
public class Author {
    private String name;
    private String email;
    private char gender;

    public Author(String name, String email, char gender) {
        this.name = name;
        this.email = email;
        this.gender = gender;
    }

}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name;
        String authorname;
        String email;
        int price;
        int qty;
        char gender;


        Author[] author1 = new Author[3];
        System.out.println("Author's name: ");

        System.out.println("Author's email: ");
        email = sc.nextLine();
        System.out.println("Author's gender: ");
        gender = sc.next().charAt(0);

Author[]表示类Author的名称和数组。因此,在Book类的这个属性中,您将拥有一个数组,其中包含具有自己姓名、电子邮件和性别的作者

现在在Main类中有一个由大小为3的作者创建的数组。因此,您可以实际地将3位作者放入该数组中,直到该数组已满并需要扩展

要做到这一点,您可以使用For循环或直接将它们插入阵列上的位置:

//Set a new Author per position directly
authors[0] = new Author("Jeff Smith", "jsmith@email.com", "M".toCharArray()[0]);
authors[1] = new Author("Jane Doe", "jdoe@email.com", "F".toCharArray()[0]);
authors[2] = new Author("Brian  Smith ", "bsmith@email.com", "M".toCharArray()[0]);
或者使用For循环,在该循环中,每次通过循环都将名称、电子邮件和性别设置为新值

String name; 
String email;
char gender;

for (int i = 0; i < authors.length; i++) {
  authors[i] = new Author(name, email, gender);
}
表示您正在创建最多可容纳三位作者的数组。我们可以首先使用

Author billy = new Author("Billy","Billy@gmail.com",'M');
Author bob = new Author("Bob","Bob@gmail.com",'M');
Author shirly = new Author("Shirly","Shirly@gmail.com",'F');
然后我们可以通过执行以下操作将它们放入数组中

author1[0] = billy;
author1[1] = bob;
author1[2] = shirly;
author1[0]
要获得某个作者,我们可以通过执行以下操作将其从数组中取出

author1[0] = billy;
author1[1] = bob;
author1[2] = shirly;
author1[0]
这会给我们比利。但是,我们可能不会从对象中提取一些信息,如名称和电子邮件,因为这些字段当前是私有的

将作者更改为

public class Author {
   public String name;
   public String email;
   public char gender;

   public Author(String name, String email, char gender) {
       this.name = name;
       this.email = email;
       this.gender = gender;
   }
}
通过此更改,您可以使用author1通过执行以下操作从billy处获得一些信息

author1[0].name
这将给我们一个字符串,我们可以用它打印和处理其他字符串