将单词与文本文件Java进行比较

时间:2014-06-09 00:26:02

标签: java string swing while-loop buffer

我们应该创建一个从JTextField读取单词并将其与列表进行比较的程序,然后我们必须计算该单词存在多少行(如果存在的话)并在同一行中显示相同的行编程到另一个JTextField(它应该是某种类型的字典)这里是我所拥有的:

boton1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String palabra=tx1.getText();
boton3.setEnabled(true);
try{
        // here is where i open my file
        FileInputStream fstream = new FileInputStream("src/archivos/translator.txt");
        DataInputStream entrada = new DataInputStream(fstream);
        BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
        String strLinea;
        while ((strLinea = buffer.readLine()) != null)   {
              System.out.println (strLinea);
        int i=0;
        while (!(strLinea.equals(palabra))){
        i++;

        }
  tx2.setText(String.valueOf(i));
        }
        entrada.close();
    }catch (IOException x){ 
        System.err.println("Oh no, ocurrió un error: " + x.getMessage());
    }

}});

2 个答案:

答案 0 :(得分:0)

根据我对你所说的内容的理解,首先,你应该改变:

while (!(strLinea.equals(palabra))){

while (!(strLinea.contains(palabra))){

您想查看该行是否包含该字词,而不是该行与TextArea的内容相同。此外,您还要在while循环的内容中添加另一个语句。目前,它只会增加" i"永远,如果这个词没有出现在文件中。你希望它将strLinea移动到下一行,如果当前没有它,如果它有,那么你将要终止循环。

答案 1 :(得分:0)

我认为你的问题是

while ((strLinea = buffer.readLine()) != null)   {
          System.out.println (strLinea);
    int i=0;
    while (!(strLinea.equals(palabra))){
    i++;

    }
tx2.setText(String.valueOf(i));
    }

在内部 while 循环中,您将永远迭代。如果要将文件中的每个单词与JTextField值进行比较,则应编写

int i = 0;   
while ((strLinea = buffer.readLine()) != null)   {
    i++;
    System.out.println (i + " " + strLinea);
    if (strLinea.equals(palabra)){
        tx2.setText(String.valueOf(i));
        break;
    }
}