Como utilizar el split

Bueno tengo un problema que el programa me va perfectamente y que quiero dividir el String en 2 trozos por una parte el nº del piloto y 2º el tiempo.
import java.io.*;
public class lee {
BufferedReader in;
String lineas;
  public lee(){
try {
in = new BufferedReader(new FileReader("tiempos.txt"));
//open a bufferedReader to file Pilotos.txt
while (( lineas = in.readLine()) != null){
//read a line from Pilotos.txt and save into a string
System.out.println("Lee: "+ lineas+ "\t");
}
//print out the line
in.close();
//safley close the BufferedReader after use
}catch(IOException e){
System.out.println("There was a problem:" + e);
}
}
public static void main(String[] args){
lee lee = new lee();
}
}
(el programa me saca todos los datos de esta forma)
Lee: 1 1 35 37 950
Lee: 2 1 36 12 42
Lee: 11 1 37 2 133
Lee: 16 1 36 43 796
Lee: 7 1 35 22 453
Lee: 9 1 36 23 23
Lee: 15 1 36 24 964
Lee: 5 1 36 9 692
Lee: 10 1 36 40 380
Lee: 4 1 35 32 339
Lee: 6 1 36 54 567
Lee: 8 1 37 5 56
Y claro yo solo quiero coger por una parte el 1º numero que sale(numero piloto) y por otra el resto (son tiempos de carrera) ...
A ver si tiene solución esto que ya llevo una semana atrancado con esto ;)
Muchísimas gracias

1 Respuesta

Respuesta
1
Esto lo puedes lograr de dos formas, la primera seria usando la clase strintokenizer, la cual separa una cadena en "tokens" que están separados por un delimitador, en tu caso seria el espacio, al usar esta clase terminarías con una serie de tokens de los cuales sabrías que el primero es el numero del piloto y los demás sus tiempos.
La otra forma es buscando dentro de la cadena la primer incidencia de un espacio, lo cual te daría un indice de donde se encuentra ese primer espacio, con eso sabes que todo lo que esta detrás de de ese indice es el numero del piloto y lo que esta a a la derecha son los tiempos, ambos los puedes sacar con el método substring de la clase String.
import java.io.*;
import java.lang.*;
public class lee{
BufferedReader in;
String lineas;
String[] datos;
  public  lee(){
try {
in = new BufferedReader(new FileReader("tiempos.txt"));
//open a bufferedReader to file Pilotos.txt
while (( lineas = in.readLine()) != null){
String[] datos = lineas.split(" ");
//read a line from Pilotos.txt and save into a string
//  (si kieres todas las lineas)System.out.println("linea: "+ lineas);
System.out.println("driver:"+ datos[0]+" "+"time: "+ datos[1]+":"+ datos[2]+":"+ datos[3]+":"+ datos[4]);
//para la 1º palabra
A ver ahora como hago ... para que datos [0] sea ... un string llamado Piloto
y [1][2][3][4] de datos sea tiempos .Ademas en tiempos quiero hacer una copia y la copia multiplicar el 1º por 60*60*1000
el 2º 60*1000
3º*1000
Y el 4º que sume los anteriores.
Es que necesito 2 strings de tiempos uno en milisegundos y otro "a pelo" .
Muchas gracias
Perdón me perdí en tu ultima respuesta, ¿hay algo en lo que te pueda ayudar en ese ultimo código que pusiste?
Si perdón mira... vale consigo sacar el array de datos
en la posiacion [0] de datos esta el nº piloto
luego en [1] [2][3][4] Son los tiempos
y quiero crear otro array con el nombre pilotos
y uno con los tiempos .
Lo que quiero hacer con datos [1] es multiplicarlo por 60 para pasarlo a minutos ) otra vez por 60 (segundos) y por 1000 para pasarlo a milisegundos .
El de datos [2] quiero multiplicarlo por 60 y por 1000
datos [3] multiplicarlo por 1000
y datos [4] esta ya en milisegundos
y sumarlos [1][2][3][4] para tenerlo en un solo array de tiempos en milisegundos y otro sin multiplicar nada en el formato hora:min:seg:milisegundo
Bueno pues solo tendrías que recorrer el array original y hacer los cálculos que mencionas, eso lo guardas en otro array y tendrías lo que estas buscando.
joder me van surgiendo problemas .
A ver tengo ya en un String los pilotos .
y en 4 strings los tiempos
el string horas , minutos , segundos y milesimas
KIEROOOOOO KIERO KIERO . Quiero ......... que el String se multiplique por un int
Ejemplo
Para pasar de hora a milisegundos
horas *60*60*1000 = x milisegundos
min*60*1000= x milisegundos
...
Y luego sumarlos y ya esta :O ¿alguna idea? ...
Es que claro no puedo multiplicarlo directamente porque si uno es un String y el otro un int ... me da error.
A ver como cambio de String a int ... AAAAAAAAAAAAAAAAAAAAAAAAAAA cuantooooos problemaaaas :P
O puedo hacerlo de alguna forma sin tanto texto sin tanto lio .
Para pasar un String a un int lo haces de esta forma, Integer.parseInt(cadena).
Un ejemplo para tu caso seria:
datos[1] = (Integer.parseInt(datos[1]) * 60 * 60 * 1000);
datos[2] = (Integer.parseInt(datos[2]) * 60 * 1000);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas