Autor Tema: Dudas programa JAVA ¿requiere de expresiones regulares?  (Leído 3541 veces)

maugr2014

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Dudas programa JAVA ¿requiere de expresiones regulares?
« en: 05 de Septiembre 2014, 06:27 »
Hola! bueno tengo un programa que utiliza Scanner cuenta palabras quita espacios y debe contar tambien las lineas ingresadas (aqui el problema que no se como implementar esto, a la hora de dar "enter" el ususario pueda seguir escribiendo y ejecutar a la hora de escribir algun signo declarado($)), y tambien debe de eliminar el texto que este entre comentarios es decir a la hora de ejecutar debe resultar asi:

Ingresa tu texto:

hola foro /* aprender a
programar */
adios
$

TU TEXTO SIN ESPACIOS NI COMENTARIOS:
holaforoadios
NUM PALABRAS:8
NUM LINEAS:3
BUILD SUCCESSFUL (total time: 6 seconds)


Soy muy nuevo en esto y he buscado he intentado mucho pero no lo he logrado aunque no se si sea necesario usar exp regulares si alguien pudiera ayudarme por favor se lo agradezco desde ya, les dejo el codigo de lo que llevo hecho. :)

Código: [Seleccionar]
package compiladores;

import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;
/**
 *
 * @author Usuario
 */
public class NewClas65 {
    public static void main(String[] args)
 {
  String texto;

final char condicion = (char) '*';
int j =1,l=1;

   String replace="";
   
   
  System.out.println("Escribe tu texto:");

texto= new Scanner(System.in).nextLine();
char[] cadena = texto.toCharArray();





for(int i=0; i<texto.length(); i++)
    if(texto.charAt(i)== ' ' || texto.charAt(i) == '\n' || texto.charAt(i)== '\t')j++; {
    }
   
   
    for(int i=0; i<texto.length(); i++)
    if(texto.charAt(i)=='\n')l++;{
     
 }
   
    if (texto.contains("*/")){
        replace=texto.replaceAll(",","");
       
    }
     
   
   
     
       System.out.println("TU TEXTO SIN ESPACIOS NI COMENTARIOS: ");
     System.out.println(texto.replaceAll("\\s",""));
   
             System.out.println("NUM PALABRAS: "+j);
             System.out.println("NUM LINEAS: "+l);
           
}
}
« Última modificación: 09 de Septiembre 2014, 08:04 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Dudas programa JAVA con expresiones regulares
« Respuesta #1 en: 05 de Septiembre 2014, 19:32 »
Hola, tal y como lo has planteado con nextLine únicamente te permite entrar una línea de texto, creo que sería mejor que lo plantees como en este código:

Código: [Seleccionar]
import java.util.*; 

public class Input 

    public static void main(String[ ] args) 
    { 
        Scanner in = new Scanner(System.in); 
        List<String> list = new ArrayList<String>( ); 
        String line = null; 
        System.out.println("Enter some strings !"); 

        while ((line = in.nextLine( )).length( ) > 0)   
        {     
            list.add(line); 
        } 

    }//main ends 

}

De esta manera puedes escribir varias líneas y para terminar de escribir basta con pulsar dos veces enter.

También podrías cambiarlo para que en vez de así termine cuando sea una línea que contiene un $.

A partir de aquí ya tienes un array de Strings y por tanto cada elemento del array es una línea introducida, ya tienes contadas el número de líneas... por lo que creo que lo puedes hacer sin expresiones regulares, simplemente concatenando y con replace.

Salu2!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".