Java 将逗号分隔的字符串传递到类中

Java 将逗号分隔的字符串传递到类中,java,string,class,parsing,Java,String,Class,Parsing,以下是我到目前为止代码中的内容 public class Person { public Person() { String person = ""; int age = 0; String city = ""; int sibCount = 0; // make an instance field for name, city, age, and siblingCount Person person = new Person(); Pe

以下是我到目前为止代码中的内容

public class Person {

public Person()
{
   String person = "";
   int age = 0;
   String city = "";
   int sibCount = 0;

 // make an  instance field for name, city, age, and siblingCount       
   Person person = new Person();
   Person age = new Person();
   Person city = new Person();
   Person sibCount = new Person();  

}
// make a method called parseCommaDelim
public void parseCommaDelim(String[] args){
    // return a Person instance UNSURE HERE

   }
    // make a toString method
   public String toString()
   {
       String str = "person" + person + "age" + age + "city" + city;
       return str;
   }

}
}
我正在尝试返回一个person实例,但不确定如何执行。我试过“返回人”我的代码不喜欢它


我的toString方法也不起作用,因为它不知道人、年龄或城市是什么,我也不知道为什么。

您想要实现的可能是以下几点:

public class Person {

   public String person;
   public int age;
   public String city;
   public int sibCount;  

public Person()
{
   person = "";
   age = 0;
   city = "";
   sibCount = 0;

}
// make a method called parseCommaDelim
public String parseCommaDelim(String[] args){
    // return a Person instance UNSURE HERE

   }
    // make a toString method
   public String toString()
   {
       String str = "person" + person + "age" + age + "city" + city;
       return str;
   }


}
public class Person {

  // fields
  private String person = "";
  private int age = 0;
  private String city = "";
  private int sibCount = 0;

  // constructor
  public Person() {
  }

  // public access methods (getters)
  public String getPerson() {
    return this.person;
  }

  public int getAge() {
    return this.age;
  }

  public String getCity() {
    return this.city;
  }

  public int getSibCount() {
    return this.sibCount;
  }

  // toString
  public String toString() {
    return "person: " + person + ", age: " + age + ", city: " + city;

  // factory method
  public static Person parseCommaDelim(String s) {
    String[] tokens = s.split(",");

    Person instance = new Person();
    instance.person = tokens[0];
    instance.age = Integer.parseInt(tokens[1];
    instance.city = tokens[2];
    // ...

    return instance;
  }
}
可能应该将字段
person
重命名为
name
。根据您是否希望使类不可变,您可能希望添加一个将所有参数作为参数的构造函数:

public Person(String name, int age, String city, int sibCount) {
  this.name = name;
  this.age = age;
  this.city = city;
  this.sibCount = sibCount;
}
或为可更改字段添加设置器,例如:

public void setCity(String city) {
  this.city = city;
}
顺便说一句,使用上述构造函数,您可以将工厂修改为以下稍微干净的代码:

  public static Person parseCommaDelim(String s) {
    String[] tokens = s.split(",");

    String person = tokens[0];
    int age = Integer.parseInt(tokens[1];
    String city = tokens[2];
    int sibCount = Integer.parseInt(tokens[3]);

    return new Person(person, age, city, sibCount);
  }

您应该先学习java基础知识,因为您似乎对java中对象的工作方式一无所知。不确定这是否是输入错误,但您应该执行
String city=“”
字符串城市=”您的方法返回类型为void。所以它不能返回任何东西。另外,你的person构造函数调用你的person构造函数,它调用你的person构造函数,它调用你的person构造函数。。。我建议您重新阅读有关方法和构造函数的书籍或教程。首先要学习的是Java标准命名约定,它规定所有类型都以大写字母开头,然后将每个单词大写。例如
ClassName
变量名以小写字母开头,其后所有单词都大写,例如
variableName
。遵循这些准则将防止您使用与类类型相同的变量名,因此
String Person=“”请学习。我们必须写一整本书才能让代码走上正确的道路,为什么要重新发明轮子。person的字段不应该用public修饰符公开。还有一个额外的结束括号。谢谢你让我的课顺利进行。关于从parse方法返回person实例,您有什么建议吗?谢谢。这帮了大忙。:)