イテレータを使用してセットを検索しようとしていますが、検索すると、セット全体のうち 2 つしか見つかりません! コードは次のとおりです。
import java.net.URL;
import com.google.gson.Gson;
import java.net.URLEncoder;
import java.io.InputStreamReader;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class Main {
public static int min(int a,int b) {
return a > b? b : a;
}
public static String corregir(String a,Set<String> col) {
System.out.print("EL TAMAÑO ES: " + col.size());
Iterator<String> it = col.iterator();
String resp = a,aux = resp;
int min = 30,dis,cont = 0;
while(it.hasNext()) {
cont++;
resp = it.next().toString();
System.out.print("El contador va en " + cont + "\n");
dis = edit_distance(a,resp);
if(dis<min) {
aux = resp; min = dis;
}
if(min==0) return resp;
}
return aux;
}
public static int edit_distance(String a,String b) {
int n = a.length(), m = b.length(),costo;
int[][] mat = new int[n+1][m+1];
for(int i=0;i<=n;++i) mat[i][0] = i;
for(int j=0;j<=m;++j) mat[0][j] = j;
for(int i=1;i<=n;++i) {
for(int j=1;j<=m;++j) {
costo = a.charAt(i-1) == b.charAt(j-1)? 1 : 0;
mat[i][j] = min(min(mat[i-1][j] + 1,mat[i-1][j-1] + costo),mat[i][j-1] + 1);
}
}
return mat[n][m];
}
public static String resultados_de_la_busqueda(String search) {
StringBuffer RES = new StringBuffer("<html>");
String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="; //El enlace para buscar en google
String charset = "UTF-8";
URL url;
Reader reader;
try {
url = new URL(google + URLEncoder.encode(search, charset));
try {
reader = new InputStreamReader(url.openStream(), charset);
GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
for(int i=0;i<3;++i) {
RES.append(results.getResponseData().getResults().get(i).getTitle());
RES.append("<br/>");
RES.append("<a href=\"");
RES.append(results.getResponseData().getResults().get(i).getUrl());
RES.append("\">" + results.getResponseData().getResults().get(i).getUrl() + "</a>");
RES.append("<br/><br/>");
}
} catch(Exception e) {}
} catch(Exception e) {}
RES.append("</html>");
return RES.toString();
}
public static void main(String[] args) throws Exception {
Set<String> col = new HashSet<String>();
FileInputStream fis = new FileInputStream("lemario.txt");
Scanner cin = new Scanner(fis);
while(cin.hasNext()) {
col.add(cin.next());
}
cin.close();
final Set<String> col2 = col;
/*
Iterator<String> it = col2.iterator();
while(it.hasNext()) {
System.out.print(it.next() + "\n");
}*/
//Corrector
System.out.print(col.size());
//Map<String,>
JFrame jf = new JFrame("Programa");
jf.setBounds(120,120,500,500);
jf.setResizable(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextField input = new JTextField();
input.setBounds(25,25,300,25);
final JLabel resultados = new JLabel();
resultados.setBounds(120,120,200,200);
JButton boton = new JButton("Buscar");
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(! input.getText().equals("")) {
String entrada = input.getText();
entrada = corregir(entrada,col2);
resultados.setText(resultados_de_la_busqueda(entrada));
}
else System.out.println("No hay entrada\n");
}
};
boton.addActionListener(al);
input.addActionListener(al);
boton.setBounds(350,25,130,25);
jf.add(boton);
jf.add(input);
jf.add(resultados);
//resultados.setText(resultados_de_la_busqueda("taringa")); //setText(input.getText()); asumiendo que está bien escrito.
//Para verificar si está bien escrito tenemos que pasarlo por el diccionario y verificar palabra por palabra
//Bastante lento, pero qué se va a hacer :'D
jf.add(input);
jf.add(resultados);
jf.setVisible(true);
}
}
私が読んでいるファイルはこれです : http://www.teoruiz.com/lemario/lemario-20101017.txt