首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Buffered Reader查找单词

使用Buffered Reader查找单词
EN

Stack Overflow用户
提问于 2015-05-22 20:27:57
回答 2查看 823关注 0票数 0

我正在解析一个具有以下文本和相同格式的文件,

name:_____ gender:_____

age:_____ grade:______

在解析时,我想首先查看"gender: f“或"gender: m”&如果是"gender: f“,那么我将创建一个新的girl对象,并设置她的姓名、年龄和年级。否则,如果是男孩,我会创建一个新的男孩对象,并设置他的名字、年龄和年级。

我的代码现在只适用于一种性别。我不确定如何实现它来搜索另一个性别。

代码语言:javascript
复制
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();
    }       
}

请帮帮我!谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-05-22 21:33:44

你不能这样做:

代码语言:javascript
复制
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() {}
      }

}

票数 0
EN

Stack Overflow用户

发布于 2015-05-22 21:34:16

假设你的文件只包含一个人,下面是你可以做的:

代码语言:javascript
复制
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();
    }       
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30396748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档