23/11/2009, 13:09
|
| | Fecha de Ingreso: noviembre-2007
Mensajes: 28
Antigüedad: 17 años, 1 mes Puntos: 0 | |
Problema de ArrayList y binarySearch() Hola por favor necesito que alguien me de una respuesta
tengo estas clases y me da un error al usar binarySearch();
por si acaso ya revise la api y todo.
aca les dejo las clases necesarias
Con esta clase leo un archivo y lo almaceno en un arraylist
Código:
import java.io.*;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
public class LeeArchivo {
ArrayList promedios=new ArrayList();
ArrayList<Alumno> lista=new ArrayList<Alumno>();
String nombre="",rut="",nota1="",nota2="",nota3="",lab1="",lab2="",lab3="";
int largo=0;
public LeeArchivo(){
File file = new File("C:/prueba.txt");
FileInputStream fis = null;
// Alumno[] al=new Alumno[10];
int j=0;
double nota1f,nota2f,nota3f,lab1f,lab2f,lab3f;
BufferedInputStream bis = null;
DataInputStream dis = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
dis = new DataInputStream(bis);
while (dis.available() != 0) { //lee todas lias lineas del archivo cuando es diferente de cero tiene datos
String linea = dis.readLine(); // se guardan los datos de la linea en el objeto String linea.
//System.out.println(linea); //se imprime el valor de linea
StringTokenizer st = new StringTokenizer(linea," "); // se divide la variable linea en tokens o palabras que estan separadas por un espacio
String []datos = new String[st.countTokens()]; //declaramos un arreglo de Strings para guardar las cadenas
int i=0;
while(st.hasMoreTokens()){ // sirve para obtener los tokens de st
datos[i]=st.nextToken(); // los guardo en el arreglo
nombre=datos[0];
rut=datos[1];
nota1=datos[2];
nota2=datos[3];
nota3=datos[4];
lab1=datos[5];
lab2=datos[6];
lab3=datos[7];
i++;
}
lista.add(new Alumno(nombre,rut,nota1,nota2,nota3,lab1,lab2,lab3));
Alumno alum=new Alumno();
Collections.sort(lista);
System.out.println(lista);
int jj=Collections.binarySearch(lista,"fd");// AQUI EL ERROR
String n1=lista.get(j).getNota1();
nota1f=Double.valueOf(n1).doubleValue();
String n2=lista.get(j).getNota2();
nota2f=Double.valueOf(n2).doubleValue();
String n3=lista.get(j).getNota3();
nota3f=Double.valueOf(n3).doubleValue();
String l1=lista.get(j).getLab1();
lab1f=Double.valueOf(l1).doubleValue();
String l2=lista.get(j).getLab2();
lab2f=Double.valueOf(l2).doubleValue();
String l3=lista.get(j).getLab3();
lab3f=Double.valueOf(l3).doubleValue();
double promedio=(((nota1f+nota2f+nota3f)/3)*0.5)+
(((lab1f+lab2f+lab3f)/3)*0.5);
promedios.add(promedio);
lista.get(j).setPromedio(promedio);
j++;
}
largo=j;
//System.out.println(lista);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Aca esta la clase Alumno
Código:
import java.io.*;
import java.util.*;
import java.util.Collections;
public class Alumno implements Comparable<Alumno> {
String nombre;
String rut;
String nota1;
String nota2;
String nota3;
String lab1;
String lab2;
String lab3;
double promedio;
public Alumno(String nombre,String rut,String nota1,
String nota2,String nota3,String lab1,
String lab2,String lab3)
{
this.nombre=nombre;
this.rut=rut;
this.nota1=nota1;
this.nota2=nota2;
this.nota3=nota3;
this.lab1=lab1;
this.lab2=lab2;
this.lab3=lab3;
this.promedio=0;
}
public Alumno()
{}
public void setNombre(String nombre)
{this.nombre=nombre;}
public String getNombre()
{return nombre;}
public void setRut(String rut)
{this.rut=rut;}
public String getRut()
{return rut;}
public void setNota1(String nota1)
{this.nota1=nota1;}
public String getNota1()
{return nota1;}
public void setNota2(String nota2)
{this.nota2=nota2;}
public String getNota2()
{return nota2;}
public void setNota3(String nota3)
{this.nota3=nota3;}
public String getNota3()
{return nota3;}
public void setLab1(String lab1)
{this.lab1=lab1;}
public String getLab1()
{return lab1;}
public void setLab2(String lab2)
{this.lab2=lab2;}
public String getLab2()
{return lab2;}
public void setLab3(String lab3)
{this.lab3=lab3;}
public String getLab3()
{return lab3;}
public void setPromedio(double promedio)
{this.promedio=promedio;}
public double getPromedio()
{return promedio;}
public String toString()
{
return nombre+" "+
rut+" "+
nota1+" "+
nota2+" "+nota3+" "+lab1+" "
+lab2+" "+lab3;
}
public int compareTo(Object o) {
Alumno otroUsuario = (Alumno) o;
//podemos hacer esto porque String implementa Comparable
return nombre.compareTo(otroUsuario.getNombre());
}
public int compareTo(Alumno o) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
De antemano muchas gracias |