JAVA:创建不会干扰同一类的其他对象的新对象

 手机用户2602919547 发布于 2023-02-12 13:31

我是新手(也是编程的新手),我试图寻找答案,但却找不到答案.我的任务今天到期,所以非常感谢帮助.这个问题在我身上发生了两次,但第一次我能够通过编程另一种方式忽略它,现在我已经不能了.每次我创建一个新对象时(Agent a = new Agent() <-- name of my class),它都会干扰同类型的其他对象(这与引用类型有什么关系吗?).我正在尝试创建一个DiscussionDirector class 需要两个Agent对象并在它们之间创建一个随机对话(基于随机),但我甚至无法启动,因为我还没有能够创建两个类型为Agent的对象.

这是代理的代码:

import java.util.Calendar;
import java.io.*;
import java.util.Random;

public class Agent{
  private static boolean isMale;
  private static String birthdate;
  private static int birthyear;
  private static int birthmonth;
  private static int birthday;
  private static String name;
  private static String nativeCity;
  private static String currentCity;
  private static String major;
  private static Random r = new Random();

  public static void main(String[]args){
  }

  public String getCityNow(){
    return this.currentCity;
  }

  public String getCityBorn(){
    return this.nativeCity;
  }

  public String getName(){
    return this.name;
  }

  public boolean getGender(){
    return this.isMale;
  }

  public String getMajor(){
    return this.major;
  }

  public String getBirthday(){
    String birthdate = (this.birthday + "/" + this.birthmonth + "/" + this.birthyear);
    return birthdate;
  }
  public void sayHelloTo(String name){
    System.out.println(this.name + " says: Hi " + name + ", I'm " + this.name);
  }

  public void sayHello(){
    System.out.println(this.name + " says: Hello, my name is " + this.name);
  }

  public void CityBorn(){
    System.out.println(this.name + " says: I am from " + this.nativeCity);
  }

  public void howOldAreYou(){
    System.out.print(this.name + " says: I am ");
    if(Calendar.getInstance().get(Calendar.MONTH) < this.birthmonth){
      System.out.println((Calendar.getInstance().get(Calendar.YEAR) - this.birthyear - 1) + " years old");
    }
    else if((Calendar.getInstance().get(Calendar.MONTH) == this.birthmonth) && (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) == this.birthday)){
      System.out.println((Calendar.getInstance().get(Calendar.YEAR) - this.birthyear - 1) + " years old");
    }
    else{
      System.out.println((Calendar.getInstance().get(Calendar.YEAR) - this.birthyear) + " years old");
    }

  }

  public void sayGender(){
    System.out.println(this.name + " says: I am a ");
    if(isMale == true){
      System.out.print("man");
    }
    else{
      System.out.print("woman");
    }
  }

  public void CityNow(){
    System.out.println(this.name + " says: I currently live in " + this.currentCity);
  }

  public void sayMajor(){
    System.out.println(this.name + " says: I am studying " + this.major);
  }

  public void whoAreYou(){
    sayHello();
    CityBorn();
    howOldAreYou();
    sayMajor();
    CityNow();
  }

  public Agent()throws IOException{
    this.isMale = r.nextBoolean();
    if(this.isMale == true){
      WordList MaleNames = new WordList("MaleNames.txt");
      this.name = MaleNames.getRandomWord();
    }
    else{
      WordList FemaleNames = new WordList("FemaleNames.txt");
      this.name = FemaleNames.getRandomWord();
    }
    this.birthyear = 1995 - r.nextInt(60); //Agents can't be too young or too old.
    this.birthmonth = r.nextInt(11)+1;
    if(this.birthmonth == 1|this.birthmonth == 3|this.birthmonth == 5|this.birthmonth == 7|this.birthmonth == 8|this.birthmonth == 10|this.birthmonth == 12){
      this.birthday = r.nextInt(30)+1;
    }
    else if (this.birthmonth == 2){
      this.birthday = r.nextInt(27)+1;
    }
    else{
      this.birthday = r.nextInt(29)+1;
    }
    WordList Major = new WordList("Majors.txt");
    this.major = Major.getRandomWord();
    WordList Cities = new WordList("Cities.tx");
    this.nativeCity = Cities.getRandomWord();
    this.currentCity = Cities.getRandomWord();
  }

  public Agent generateAgent()throws IOException{
    return new Agent();
  }

}

所以是的,有没有人知道为什么当我创建一个两个Agent()对象然后generateAgent() 对它们做对象时,它们总是一样的?

谢谢

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有