elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:26  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Ayuda con la clase scanner.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con la clase scanner.  (Leído 2,433 veces)
machosmecos

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda con la clase scanner.
« en: 18 Noviembre 2010, 04:22 »

Bueno, básicamente estoy haciendo un programa a modo de diccionario en donde cuando ponga una palabra en un textField y al darle a un botón, me localice la palabra en un archivo de texto (lo de la lectura del .txt se que es con los file reader y buffers)

como el file reader y buffered reader solo leen lo que hay en el .txt sin importar que tenga, busque por el foro y encontré códigos sobre la clase scanner, que me cae de perlas, creo que es la solución a mi problema, pero solo la he visto para que imprima el resultado en consola..

mi duda es ¿como utilizo la clase scanner, de tal manera que busque en un archivo de texto lo que he puesto en un TextField, le doy a un boto y me imprima el resultado de mi búsqueda (que debe coincidir claro esta) y me lo imprima en un textArea.

ejemplo, que yo tenga en el archivo.txt  perro(definición , gato (definición) pato (definición)

cuando escriba perro en textfield, me ponga en el textArea: perro(definición)

de antemano gracias,  :laugh:


En línea
egyware


Desconectado Desconectado

Mensajes: 436


GameDeveloper


Ver Perfil WWW
Re: Ayuda con la clase scanner.
« Respuesta #1 en: 18 Noviembre 2010, 13:22 »

Y como lo harias sin la clase Scanner?
Por lo que se los Reader (en especial BufferedReader) pueden leer linea por linea un archivo y ahi debes parsear tu string tomado del archivo de text. Ahora si usas la clase Scanner tambien puedes hacer lo mismo ya que tiene una funcion llamada nextLine que cumple la misma función.
Ahora si quieres usar algun metodo en especial creo (por que no estoy seguro) que te puede servir findInLine  ya que busca String usando delimitadores especificados por el programador. Pero sinceramente prefiero ir leyendo linea por linea y a cada linea ir extrayendo los datos ya que es más facil de entender.

Un ejemplo del uso clase Scanner
Código
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){ //le hasta que no encuentre más lineas
 String linea = in.nextLine();
 linea = linea.toLowerCase(); //algun tratamiento especial :P
 System.out.println(linea); //imprimo resultado
}
 

Te recomiendo que el archivo del diccionario lo guardes en alguna estructura como un arbol binario de busqueda (BST), un arbol de autovalance (AVL), un arbol Redblack, arbol Tries, tablas hash, etc...
ya que buscar linealmente en el diccionario cada vez que buscan alguna palabra sera muy, pero muy lento si tienes muchas palabras ingresadas.

Siempre es revisar la documentación y saber inglés
http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html


Saludos!!


En línea

machosmecos

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con la clase scanner.
« Respuesta #2 en: 23 Noviembre 2010, 21:23 »

Bueno, perdon por no contestar, me he estado liando con otras tareas y este programita...

aun no lo he logrado, he armado mi ventana, pero no se como "capturar" lo que yo ingrese en mi textFied (y de que manera establecerlo :-[)

publico mi codigo, para explicarme mejor:

Código:
package diccionariosa;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;




public class diccionariosa extends Frame implements WindowListener, ActionListener {

    TextArea t;
    TextField f;
    Button b,h;
    Choice ch;
   
   File archivo = null;
    Scanner in = new Scanner(System.in);
    ArrayList lineas = new ArrayList();
    FileReader fr = null;

    diccionariosa() throws FileNotFoundException{

        setLayout(null);
        setTitle("diccionario sinonimos / antonimos");
        setBounds(300,200,400,400);
        addWindowListener(this);

        t=new TextArea();
        t.setBounds(20,150,200,200);
        add(t);

        f=new TextField();
        f.setBounds(10,40,150,20);
        add(f);

        b=new Button("Buscar");
        b.setBounds(70,80,100,20);
        b.addActionListener(this);
        add(b);
       
        h=new Button("limpiar");
        h.setBounds(200,80,100,20);
        h.addActionListener(this);
        add(h);

        ch=new Choice();
        ch.setBounds(200,40,150,20);
        ch.addItem("Sinonimos");
        ch.addItem("Antonimos");
        add(ch);

       

   

    }


    public static void main(String[] args) throws FileNotFoundException {
        diccionariosa d = new diccionariosa();
        d.setVisible(true);




    }

    public void windowOpened(WindowEvent e) {

    }

    public void windowClosing(WindowEvent e) {
      setVisible(false);
      dispose();
      System.exit(0);
    }

    public void windowClosed(WindowEvent e) {

    }

    public void windowIconified(WindowEvent e) {

    }

    public void windowDeiconified(WindowEvent e) {

    }

    public void windowActivated(WindowEvent e) {

    }

    public void windowDeactivated(WindowEvent e) {

    }

    public void actionPerformed(ActionEvent e) {



        if( ch.getSelectedItem().equals("Sinonimos")) {
           
            try{
archivo = new File("c:\\Sinonimos.txt");
String linea;
fr = new FileReader(archivo);
BufferedReader br = new BufferedReader(fr);

lineas.clear();
String busqueda= f.getText();
in.nextLine();

busqueda = in.nextLine();

while((linea = br.readLine()) != null ){
lineas.add(linea);
}

for(int i=0;i<lineas.size();i++){
linea = (String)lineas.get(i);
if(linea.equals(busqueda)){
t.append(linea);

i = lineas.size()
}
}
}catch(IOException ex){}

        }


        else if( ch.getSelectedItem().equals("Antonimos")){
           
    }
        }



   
}

En línea
Leyer
Moderador
***
Desconectado Desconectado

Mensajes: 772


[]


Ver Perfil WWW
Re: Ayuda con la clase scanner.
« Respuesta #3 en: 23 Noviembre 2010, 23:18 »

Usa substring para separar la cadena y comprobar si es lo que buscas, si asi pues lo muestras :P

En línea

machosmecos

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con la clase scanner.
« Respuesta #4 en: 11 Diciembre 2010, 22:52 »

UFF perdón por no darme una vuelta por aquí, realmente he estado ocupado por fuerzas de causa mayor (tareas y problemas con mi conexion) pero en fin, logre terminar mi programa, gracias por la ayuda prestada y las aclaraciones, dejo parte del código, mi duda con scanner:

Código:
         
Scanner in = new Scanner(System.in);


 String request = f.getText(); /// "f" es mi text field donde ingreso mis datos

try {
final BufferedReader reader = new BufferedReader(new FileReader("c:\\Diccionario.txt")); //mi archivo .txt donde tengo mi información
String line = "";
while((line = reader.readLine())!= null){
if(line.toLowerCase().indexOf(request.toLowerCase())!= -1){
t.setText("");  
t.append(""+line+"\n");/// un textarea donde imprimo mis resultados
}

break;
}reader.close();
}

catch (IOException ex) {
}
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
scanner bug RFI ayuda
Hacking Básico
*crash_override* 0 319 Último mensaje 11 Enero 2007, 00:25
por *crash_override*
ayuda con clase Scanner -solucionado.
Java
carlitos.dll 1 1,179 Último mensaje 13 Septiembre 2008, 20:40
por carlitos.dll
se puede dar herencia de una clase anidada a una clase normal.
Java
kev4142 0 1,271 Último mensaje 7 Agosto 2009, 20:46
por kev4142
[SOLUCIONADO] C++: una clase como campo private de otra clase « 1 2 3 »
Programación C/C++
^Winder^ 38 3,869 Último mensaje 6 Octubre 2009, 14:55
por Anibal784
Problema de interacion entre una clase Interfaz y la clase que la llama
Java
yeah69 4 1,027 Último mensaje 21 Mayo 2010, 06:30
por we4rt
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines