我们应该创建一个从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());
}
}});
答案 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;
}
}