elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  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 5,169 veces)
machosmecos

Desconectado Desconectado

Mensajes: 3


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

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: 526



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

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
  1. Scanner in = new Scanner(System.in);
  2. while(in.hasNextLine()){ //le hasta que no encuentre más lineas
  3.  String linea = in.nextLine();
  4.  linea = linea.toLowerCase(); //algun tratamiento especial :P
  5.  System.out.println(linea); //imprimo resultado
  6. }
  7.  

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 pm »

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


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


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

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 pm »

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 ayuda
Diseño Gráfico
_loko_ 3 2,080 Último mensaje 29 Mayo 2005, 03:22 am
por _loko_
ayuda con clase Scanner -solucionado.
Java
carlitos.dll 1 2,644 Último mensaje 13 Septiembre 2008, 20:40 pm
por carlitos.dll
Ayuda con la clase Stack T_T
Java
.Maku. 4 5,287 Último mensaje 11 Mayo 2009, 02:01 am
por AlbertoBSD
se puede dar herencia de una clase anidada a una clase normal.
Java
kev4142 0 3,420 Último mensaje 7 Agosto 2009, 20:46 pm
por kev4142
Problema de interacion entre una clase Interfaz y la clase que la llama
Java
yeah69 4 4,581 Último mensaje 21 Mayo 2010, 06:30 am
por we4rt
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines