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实例,您有什么建议吗?谢谢。这帮了大忙。:)