Referenciar un token

A perdon aki sta mi codigo
import java.util.ArrayList;
import java.util.*;
import java.io.*;
import javax.swing.*;
class arra {
public static void main(String [] arg) {
File archivo = null;
FileReader fr = null;
String linea,b;
ArrayList lineas2 = new ArrayList();
ArrayList lineas = new ArrayList();
try {
archivo = new File ("C:/nuevo.log");
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null){
lineas.add(linea);
}
for (int j = 0 ; j < lineas.size() ; j++){
linea = (String)lineas.get(j);
StringTokenizer st = new StringTokenizer( linea, ",");
while(st.hasMoreTokens()){ //inicio while2
b= st.nextToken();
lineas2.add(b);
System.out.println(b); } }
}//FIN DEL TRY
catch(IOException e){
System.out.println(e);
}
finally{
try{ //el bloque finally se ejecuta siempre, por eso, si se cierra el fichero
if( fr != null){ //al final del primer try, y ha dado un error antes, pasaría
fr.close(); //al 1er catch y luego saldría, dejándolo abierto. Es conveniente
} //cerrarlo aquí, comprobando que no sea -por un error anterior, como
}catch (IOException e){ // no tener permisos de lectura o que no exista - de valor null.
}
}
System.exit(0);}
}
:)

1 respuesta

Respuesta
1
Lo que quieres lo puedes hacer de la siguiente manera:
String[] tokens = linea.split(",");
double coordenada1 = Double.parseDouble(token[3]);
double coordenada2= Double.parseDouble(token[5]);
Ok perfecto ahora me arroja solo los datos que me inportan que son:
c1 1916.1800
c2 9828.388
Ahora lo que pretendo es mostrar esos datos de la siguiente manera, para el caso de c2 de igual manera para c2:
grados =19(enteros)
minutos =16.18 (flotante)
seg= 00(int)
¿Cómo podría hacerlo?
Espero me puedas ayudar
Gracias.
:)
Ok. Yo lo haría de esta forma:
Para que el código sea medianamente reutilizable, create una clase privada Coordenada:
class Coordenada(){
    private int grados;
    private float minutos;
    private int segundos;
    public Coordenada(String strCoordenada){
       this.grados = Double.parseDouble(strCoordenada)/100;
       double resto = c1 - grados*100;
       int resto2= resto*10000;
       String tempStr = "" + resto2;
       String tempMinutos = tempStr.substring(0,4);
       String tempSegundos = tempStr.substring(4);
       this.minutos = Integer.parseInt(tempMinutos)/100;
       this.segundos = Integer.parseInt(tempSegundos);
    }
    public int getGrados(){return grados;}
    public float getMinutos(){return minutos;}
    public int getSegundos(){return segundos;}

No la he probado.
Te paso la clase corregida y probada:
public class Coordenada{
private int grados;
private float minutos;
private int segundos;
public Coordenada(String strCoordenada){
double d = Double.parseDouble(strCoordenada);
this.grados = (int)Math.floor(d/100);
double resto = d - (grados*100);
int resto2= (int) (resto*10000);
String tempStr = "" + resto2;
String tempMinutos = tempStr.substring(0,4);
String tempSegundos = tempStr.substring(4);
this.minutos = Float.parseFloat(tempMinutos)/100;
this.segundos = Integer.parseInt(tempSegundos);
}
public int getGrados(){return grados;}
public float getMinutos(){return minutos;}
public int getSegundos(){return segundos;}
public static void main(String[] args){
Coordenada c = new Coordenada("12345.6789");
System.out.println("grados=" + c.getGrados());
System.out.println("minutos=" + c.getMinutos());
System.out.println("segundos=" + c.getSegundos());
}

}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas