ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java如何创建不同对象的数组/矩阵

2019-11-05 18:01:11  阅读:194  来源: 互联网

标签:matrix java object


我有点困惑

我创建了一个名为person的类,该类具有age和name属性(并获取set方法).
然后在另一堂课中,我想创建一个人数组,每个人的年龄和姓名都不同.
但是最终我所有的人都以姓氏和年龄结尾.
如果我手动创建它们,那没关系,但是对于for循环,我遇到了这个问题.
我应该怎么做才能得到不同的人?

这是个人类的代码:

public class person {
static String name;
static int age;
public person() {
    name="name";
    age=0;
}
public static String getName() {
    return name;
}
public static void setName(String name) {
    person.name = name;
}
public static int getAge() {
    return age;
}
public static void setAge(int age) {
    person.age = age;
}

public static void main(String[] args) {
    // TODO Auto-generated method stub

}

}

这是我要创建数组/矩阵的代码:

  public class array {
 static person[][] a;

 public static void main(String[] args) {
  a=new person[3][3];


  //manual created person
  person first=new person();
  person second=new person();
  person third=new person();
  first.setAge(12);
  first.setName("first");
  second.setAge(20);
  second.setName("second");
  third.setAge(40);
  third.setName("third");


  //automatic (here I get the disired effect)
  for (int i = 0; i < a.length; i++) {
   for (int j = 0; j < a.length; j++) {
    a[i][j]=new person();
    a[i][j].setAge(10+j);
    a[i][j].setName("Alia"+i);
    System.out.println(i+" "+j+" "+a[i][j].getName()+" "+a[i][j].getAge());
   }
  }

//  a[0][0]=first;
//  a[0][1]=second;
//  a[1][2]=third;
//  System.out.println(a[0][0].getName()+" "+a[0][0].getAge());

  //for checking , and it doesnt work anymore
  System.out.println(a[0][0].getName()+" "+a[0][0].getAge());

//  for (int i = 0; i < a.length; i++) {
//   for (int j = 0; j < a.length; j++) {
//    System.out.println(i+" "+j+" "+a[i][j].getName()+" "+a[i][j].getAge());
//   }
//   
//  }
  getname();

 }

 private static void getname() {
  System.err.println("get name function");
  for (int i = 0; i < a.length; i++) {
   for (int j = 0; j < a.length; j++) {
    System.out.println(a[i][j].getName());
   }
  }

 }

}

解决方法:

从人员属性中删除静态关键字.如果它是静态的,则所有实例(所有人对象)都将使用它.

但是我会这样做:

public class Person {
    public final String name;
    public final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return name + " (" + age + ")";
    }

    public static void main(String... args) {
        List<Person> people = new LinkedList<Person>();
        people.add(new Person("David", 28));
        people.add(new Person("Andreas", 27));

        System.out.println(people);
    }
}

标签:matrix,java,object
来源: https://codeday.me/bug/20191105/1996871.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有