Pregunta

Tengo un archivo de texto donde cada línea impar posee un número entero (String por supuesto ya está en un archivo de texto), las líneas pares tiene un tiempo. Yo sólo quiero leer los números, por lo tanto, el número impar de líneas de un archivo de texto. ¿Cómo lo hago?

import java.io.*; 

public class File { 

BufferedReader in; 
String read; 
int linenum =12;


public File(){ 
try { 
in = new BufferedReader(new FileReader("MAP_allData.txt")); 

for (linenum=0; linenum<20; linenum++){

read = in.readLine();
if(read==null){} 
else{
System.out.println(read);  }
}
in.close(); 
}catch(IOException e){ System.out.println("There was a problem:" + e); 

} 
} 

public static void main(String[] args){ 
File File = new File(); 
} 
}

A partir de ahora, se leerá todas las líneas hasta que no quede nada más leer (incluso pares e) (null)

Desde mis líneas de número par es un sello de tiempo como 13:44:23 por lo que puede hacer algo como

  

si (leer == null o si de lectura incluye una   tiempo o puntos y comas) {} else {   SOP (de lectura);}

¿Fue útil?

Solución

Sin duda poner un in.readLine () sencilla justo antes del cierre de la for-bucle resolver esto?

es decir:.

for (linenum=0; linenum<20; linenum++) {

    read = in.readLine();
    if(read==null){} 
    else{
        System.out.println(read);  
    }
    in.readLine ();
}

Otros consejos

Leer en todas las líneas, e ignorar todas las demás uno.

int lineNum = 0;
String line = null;
while ( (line = reader.readLine() ) != null ) {
   lineNum++;
 if ( lineNum % 2 == 0 ) continue;
   //else deal with it
}

O simplemente readLine() llamada dos veces por bucle, ignorando el segundo tiempo, y evitar tener un contador (seguro ya que todas las llamadas a readLine nulo retorno después de final de corriente se ha alcanzado).

Editar Si la eficiencia es absolutamente clave y las líneas fecha tenía un formato de longitud fija, podría utilizar skip(15) o similares a saltar de manera eficiente las líneas que no se preocupan.

Ya tiene un LineCounter, por lo que si desea utilizar cada dos líneas, utiliza el módulo de verificación

if((linenum % 2) == 1){
     System.out.println(read);
}

Sólo realice algo como esto cada vez que se lee en una línea:

String str = read;
char[] all = str.toCharArray();
bool isInt = true;
for(int i = 0; i < all.length;i++) {
    if(!Character.isDigit(all[i])) {
        isInt = false;
    }
    else {
        isInt = true;
    }
}
if isInt {
    //INTEGER LINE
} else {
    //DO SOMETHING WITH THE TIME
}

Esto hace que la dinámica de código. Si los cambios en los archivos de texto y números enteros aparecen en diferentes líneas numeradas en cambio, su código puede permanecer igual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top