当前位置: 代码迷 >> J2EE >> 背英语单词的小程序,有些困难
  详细解决方案

背英语单词的小程序,有些困难

热度:14   发布时间:2016-04-17 23:19:20.0
背英语单词的小程序,有点困难

我有一个这样的txt文本。
我想尝试做一个背英语单词的软件。我java才刚学到面向对象。试了很久,才只是将文件导入进去。所以希望
有人试着帮帮忙,我想参考一下。以下是我读取文件的代码,还是可以运行的。但我不知道怎么连接上我想要的功能。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class GetEnglishWord {

public static void main(String[] args) {
File f = new File("C:/Users/lenovo/Desktop/english4.txt");
System.out.println(f.length());
Scanner s;
try {
s = new Scanner(f);
System.out.println(f.getName());
System.out.println(s.hasNextLine());
while(s.hasNextLine()){
String line = s.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {

e.printStackTrace();
}

}



}


我想实现的功能是,一次出现一行,点下一个,出现下一行,点上一个出现上一个记录,点加入错题本,就将那一行copy到一个新的txt文件里面。
怨我,还没学会爬,就想跑了。我觉得应该不难,但我一点思路也没有,前后根本连接不上,我就想试一试,希望有人帮忙。
谢谢大伙。

------解决思路----------------------
这应该是要用到数据结构,我来说下我的思路:
1. 先定义双向链表,大概如下:

// 单行单词的节点信息
public class WordNode {

private String curWord;// 记录当前行单词信息

private WordNode preWord = null;// 记录前一行信息

private WordNode nextWord = null;// 记录下一行信息

// 构造方法
public WordNode(String curWord) {
this.curWord = curWord;
}

public String getCurWord() {
return curWord;
}

public void setCurWord(String curWord) {
this.curWord = curWord;
}

public WordNode getPreWord() {
return preWord;
}

public void setPreWord(WordNode preWord) {
this.preWord = preWord;
}

public WordNode getNextWord() {
return nextWord;
}

public void setNextWord(WordNode nextWord) {
this.nextWord = nextWord;
}

}


2.在你读取一行初始化当前行时,把前一行与当前行的关系建立起来,大致思路:

public static void main(String[] args) {
File f = new File("C:/Users/lenovo/Desktop/english4.txt");
System.out.println(f.length());
Scanner s;
WordNode curNode = null;// 记录当前行
WordNode preNode = null;// 记录前一行
try {
s = new Scanner(f);
System.out.println(f.getName());
System.out.println(s.hasNextLine());
while (s.hasNextLine()) {
String line = s.nextLine();
// 初始化当前节点
curNode = new WordNode(line);
// 若前一节点非空,建立关系
if(null != preNode){
preNode.setNextWord(curNode);
curNode.setPreWord(preNode);
// 
preNode = curNode;
}
System.out.println(line);
}
// 最后一个节点为curNode,可以通过curNode获取所有的节点
} catch (FileNotFoundException e) {

e.printStackTrace();
}

}

3. 至于你要的界面,参考swing慢慢写吧

这个方法有一定缺陷:当单词文本内容太大的时候,就会内存溢出。LZ可以考虑限制读取行数,比如一次只读1000行,可以调整WordNode的结构,增加个int lineNum,来记录当前单词在文本中的行数,下次可以直接从这行开始读。
自己思考怎么实现吧!
  相关解决方案