duda muy básica...
Hola.
Estoy empezando con JAVA y con la programación en general y me gustarÃa que alguien me resolviera esta duda:
Mi intención con este programa es leer un fichero de nombre "escrito.txt" y sacarlo por pantalla.
Quiero que a partir del carácter '@' el programa ignore tanto ese carácter como el resto de la lÃnea.
Sé que está el metodo readLine que serÃa el más adecuado pero por curiosidad me gustarÃa que alguien
me explicase qué fallo tiene el bucle o el algoritmo en general para que por pantalla no salga nada.
El código del prorama es el siguiente:
import java.io.*;
class AS3 {
public static void main(String[] args) {
try {
File fich = new File("escrito.txt");
FileInputStream esc = new FileInputStream(fich);
int cont;
int c;
cont = 0;
String tex = new String("");
bucle1:
while ((c = esc.read()) != -1) {
if (c == (int)'#') {
c = esc.read();
while (c != (int)'n') {
c = esc.read();
}
continue bucle1;
}
else {
tex = tex + (char)c;
cont++;
}
}
System.out.println(tex);
System.out.println(cont);
} catch (FileNotFoundException e) {
System.err.println("FileStreamsTest: " + e);
} catch (IOException e) {
System.err.println("FileStreamsTest: " + e);
}
}
}
Gracias.
Estoy empezando con JAVA y con la programación en general y me gustarÃa que alguien me resolviera esta duda:
Mi intención con este programa es leer un fichero de nombre "escrito.txt" y sacarlo por pantalla.
Quiero que a partir del carácter '@' el programa ignore tanto ese carácter como el resto de la lÃnea.
Sé que está el metodo readLine que serÃa el más adecuado pero por curiosidad me gustarÃa que alguien
me explicase qué fallo tiene el bucle o el algoritmo en general para que por pantalla no salga nada.
El código del prorama es el siguiente:
import java.io.*;
class AS3 {
public static void main(String[] args) {
try {
File fich = new File("escrito.txt");
FileInputStream esc = new FileInputStream(fich);
int cont;
int c;
cont = 0;
String tex = new String("");
bucle1:
while ((c = esc.read()) != -1) {
if (c == (int)'#') {
c = esc.read();
while (c != (int)'n') {
c = esc.read();
}
continue bucle1;
}
else {
tex = tex + (char)c;
cont++;
}
}
System.out.println(tex);
System.out.println(cont);
} catch (FileNotFoundException e) {
System.err.println("FileStreamsTest: " + e);
} catch (IOException e) {
System.err.println("FileStreamsTest: " + e);
}
}
}
Gracias.
La verdad, no sé exactamente por qué no funciona el programa. Lo que te aconsejo es que no utilices etiquetas y continue, porque rompen la linealidad del programa y hacen más difÃcil su entendimiento. A cambio te propongo otra solución más sencilla. Me centro en la parte del bucle:
boolean sigue=true;
while((c=esc.read())!=-1)
{
if(c=='@')
sigue=false;
else if(c=='n')
sigue=true;
if(sigue)
{
tex+=c;
cont++;
}
}
Esto deberÃa de funcionar, aunque no lo he probado
boolean sigue=true;
while((c=esc.read())!=-1)
{
if(c=='@')
sigue=false;
else if(c=='n')
sigue=true;
if(sigue)
{
tex+=c;
cont++;
}
}
Esto deberÃa de funcionar, aunque no lo he probado
Gracias compañero.
Lo cierto es que me he tirado toda la **** mañana cambiando y recambiando los bucles y no habÃa manera.
Resultaba muy frustrante que en algo tan sencillo como esto ya me quedase tan atascado, aunque si me dices que teoricamente deberÃa funcionar se me pasa un poco el sofoco...
Probaré con tu consejo a ver qué tal.
Un saludo.
Lo cierto es que me he tirado toda la **** mañana cambiando y recambiando los bucles y no habÃa manera.
Resultaba muy frustrante que en algo tan sencillo como esto ya me quedase tan atascado, aunque si me dices que teoricamente deberÃa funcionar se me pasa un poco el sofoco...
Probaré con tu consejo a ver qué tal.
Un saludo.
