我正在解析一个具有以下文本和相同格式的文件,
name:_____ gender:_____
age:_____ grade:______
在解析时,我想首先查看"gender: f“或"gender: m”&如果是"gender: f“,那么我将创建一个新的girl对象,并设置她的姓名、年龄和年级。否则,如果是男孩,我会创建一个新的男孩对象,并设置他的名字、年龄和年级。
我的代码现在只适用于一种性别。我不确定如何实现它来搜索另一个性别。
while ((line = br.readLine()) != null) {
line = line.trim();
st = new StringTokenizer(line);
if (line.endsWith("gender: f")) {
f = new female();
st.nextToken();
String name = st.nextToken();
f.setName(name);
} else if (line.startsWith("age:")) {
st.nextToken();
String age= st.nextToken();
f.setAge(age);
line = br.readLine();
}
}请帮帮我!谢谢。
发布于 2015-05-22 21:33:44
你不能这样做:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class FileReaderExample
{
private Person person;
private Person readFile()
{
File file = new File("d:\\text.txt");
try
{
FileReader fileReader = new FileReader(file);
BufferedReader br = new BufferedReader(fileReader);
String line;
while ((line = br.readLine()) != null)
{
line = line.trim();
StringTokenizer st = new StringTokenizer(line);
if ( line.endsWith("gender: f") )
{
person = new Female();
st.nextToken();
String name = st.nextToken();
person.setName(name);
}
else if ( line.endsWith("gender: m") )
{
person = new Male();
st.nextToken();
String name = st.nextToken();
person.setName(name);
}
else if ( line.startsWith("age:") )
{
st.nextToken();
String age = st.nextToken();
person.setAge(age);
line = br.readLine();
}
}
}
catch (IOException io)
{
//
}
return person;
}
public abstract class Person
{
private String name;
private String age;
private String grade;
public String getAge()
{
return age;
}
public void setAge(String age)
{
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getGrade()
{
return grade;
}
public void setGrade(String grade)
{
this.grade = grade;
}
}
public class Female extends Person
{
public Female() {}
}
public class Male extends Person
{
public Male() {}
}}
发布于 2015-05-22 21:34:16
假设你的文件只包含一个人,下面是你可以做的:
while ((line = br.readLine()) != null) {
line = line.trim();
st = new StringTokenizer(line);
if (line.endsWith("gender: f")) {
person = new Female(); // Your Java classes's name should start with a capital letter (coding convention)
st.nextToken();
String name = st.nextToken();
person.setName(name);
} else if (line.endsWith("gender: m")) {
person = new Male();
st.nextToken();
String name = st.nextToken();
person.setName(name);
} else if (line.startsWith("age:")) {
if(person != null) { // person can be null if the first line of your file is wrong
st.nextToken();
String age = st.nextToken();
person.setAge(age);
}
line = br.readLine();
}
}https://stackoverflow.com/questions/30396748
复制相似问题