Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: maugr2014 en 05 de Septiembre 2014, 06:27

Título: Dudas programa JAVA ¿requiere de expresiones regulares?
Publicado por: maugr2014 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);
           
}
}
Título: Re:Dudas programa JAVA con expresiones regulares
Publicado por: Ogramar 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!