import [Link].
*;
import [Link];
/**
* Ejemplo de uso de Logger.
* Busca una palabra en un diccionario.
*
* @author Laboratorio de Programación
* @version 29.1.2006
*/
class Diccionario {
private static final Logger LOGGER = [Link]("Diccionario");
private static final int MAX = 100;
// diccionario de hasta MAX palabras
// ordenadas alfabéticamente
private String[] palabras = new String[MAX];
private static final int primera = 0;
private int ultima = -1;
/**
* Construye el diccionario leyendo palabras de un fichero.
*
* @param fichero A razón de una palabra por línea.
*/
Diccionario(String fichero) {
[Link]("creamos el diccionario con " + fichero);
try {
BufferedReader br = new BufferedReader(new FileReader(fichero));
for (String linea = [Link](); linea != null; linea = [Link]
e()) {
if (ultima >= MAX - 1) {
continue;
} // no caben más palabras
palabras[++ultima] = linea;
}
[Link](ultima + 1 + " palabras");
} catch (Exception e) {
[Link]([Link], "creacion: ", e);
[Link](1);
}
}
private int busca(String p) {
[Link]("comienza la busqueda de " + p);
int resultado = busca(p, primera, ultima);
[Link]("resultado de la busqueda: " + resultado);
return resultado;
}
private int busca(String p, int a, int z) {
[Link]("busca entre " + palabras[a] + " y " + palabras[z]);
if (a <= z) {
int m = (a + z) / 2;
[Link]("probamos con " + palabras[m]);
int donde = [Link](palabras[m]);
[Link]("donde= " + donde);
if (donde == 0) {
return m;
}
if (donde < 0) {
return busca(p, a, m - 1);
}
if (donde > 0) {
return busca(p, m + 1, z);
}
}
[Link]("no encontrado");
return -1;
}
/**
* Programa principal.
*
* @param args diccionario palabra
*/
public static void main(String[] args)
throws Exception {
if ([Link] != 2) {
[Link]("uso: java Diccionario diccionario palabra");
[Link](1);
}
Diccionario diccionario = new Diccionario(args[0]);
String palabra = args[1];
int posicion = [Link](palabra);
[Link](palabra + ": " + posicion);
}
}