Lecturas en java.

Iniciado por Distorsion, 30 Octubre 2007, 17:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Distorsion

Hola buenas, ay una cosa que me lleva de cabeza con la lectura de caracter a caracter en java. Estoy haciendo una especie de buscador de dos caracteres(las secuencias a encontrar se solapan), intento detectar si el usuario teclea solo un enter sin escribir nada y intento ir refrescando el valor de las variables con nuevos caracteres k se supone que el usuario a de ir introduciendo, pero me lee solo la primera secuencia introducida. No se si me explico. Aqui esta el codigo:


Código (java) [Seleccionar]
import java.io.*;               
public class Buscador {       
public static void main(String[] args) throws Exception {
int codiASCII;
char troba1 = (char)0, troba2 = (char) 0, caracter1 = (char) 0, caracter2 = (char)0;
int contador = 0;
int frases = 0;



InputStreamReader entrada = new InputStreamReader(System.in);     
BufferedReader teclado = new BufferedReader(entrada);         
BufferedReader teclado2 = new BufferedReader(entrada);
BufferedReader teclado3 = new BufferedReader(entrada);

while(troba1==(char)0){
System.out.print("Introduce el primer caracter a encontrar: ");
codiASCII= teclado.read();
if (codiASCII != 13){
if(codiASCII < 97){
troba1 = (char) (codiASCII + 32);
}
else{
troba1 = (char) codiASCII;
}
}
}

System.out.print(troba1);

while(troba2==(char)0){
System.out.print("\nIntroduce el segundo caracter a encontrar: ");
codiASCII = teclado2.read();
if (codiASCII != 13){
if(codiASCII < 97){
troba2 = (char) (codiASCII + 32);
}
else{
troba2 = (char) codiASCII;
}
}
}

System.out.print(troba2);

System.out.print("\nIntroduce el texto: ");
codiASCII= teclado3.read();
while (codiASCII != 13){
if(codiASCII < 97){
caracter2 = (char) (codiASCII + 32);
}else{
caracter2 = (char) codiASCII;
}
System.out.print(caracter2 + "\n");
if (caracter1 == troba1 & caracter2 == troba2)
contador = contador +1;

if ((caracter2=='.') | (caracter2 =='?') | (caracter2=='!'))
frases = frases +1;

caracter1 = caracter2;
codiASCII= teclado.read();
}
System.out.print(caracter1 + "\n" + caracter2);
System.out.print("Numero de las secuencias encontradas: "+contador);
System.out.print("Numero de frases: "+ frases);
}
}


Gracias por la ayuda.

Casidiablo

#1
Pues la verdad no entiendo lo que quieres hacer :(

P.d. Trata de usar las etiquetas de código.

Distorsion

Siento no haber sido mas claro. No importa ya lo e solucionado, he reexo todo el codigo Hay me estaba complicando la vida innecesariamente.

Distorsion

En este caxo de codigo:  datos= teclado.readLine(); si el usuario introduce un enter sin nada escrito da error. Como podria hacer que se repitiera la peticion de escritura de teclado asta que el usuario deje de escribir solo un enter?¿ Vamos que si da error vuelva a pedir la escritura.
saludos!

Casidiablo

Algo como:

Código (java) [Seleccionar]
do
{
    datos= teclado.readLine();
}
while(comprobar si no escribio nada);

Distorsion

XD si eso del while facil pero el problema que tengo es en la comprobacion XD, nose como comprobarlo, ademas solo con el readline el programa acaba con error si el usuario solo a introducido un enter, asi que que abria que controlar el error.
Gracias por contestar.

Casidiablo

Algo como esto:

Código (java) [Seleccionar]
import java.io.*;               
public class Buscador {       
public static void main(String[] args) throws Exception {
int codiASCII;
char caracter = (char)0;
InputStreamReader entrada = new InputStreamReader(System.in);     
BufferedReader teclado = new BufferedReader(entrada);         

System.out.print("Digite un caracter: ");
do
{
codiASCII= teclado.read();
}while(codiASCII==10 || codiASCII==13 );
caracter = (char)codiASCII;
System.out.print("El ascii es: "+ codiASCII + " y el caracter "+ caracter);
}
}


Un saludo!

bestcid

#7
quizá leyendo en lugar de con .read usado un Integer.parseInt readLine() ?

así siempre lees sólo el numero (en este caso el codigo ascii) que te interesa sin tener caracteres de retorno de carro en el bufferedreader