proyecto de Java

dagavi

#30 Tira de JavaDoc como hacemos todos, que para eso está y es muy útil:
http://java.sun.com/javase/6/docs/api/

Donde puedes ver que es y como se usan las estructuras que vienen con Java, como en este caso sería TreeSet.

Pero si tienes "dudas" con el "this." casi que lo que tendrías que hacer es buscar tutoriales de Java o algo.

PD: this hace referencia al propio objeto que llama al método

#28 Que el programa en C funcione "trasladándolo" a C++ no quiere decir que el programa esté en C++, simplemente se ha programado en C y compilado con un compilador C++, pero sigue siendo C.
Es como si sabes crear juegos para la GBA y lo metes en la NDS y funciona, no por ello sabes hacer juegos para NDS. (diría que la NDS es retrocompatible, pero no estoy seguro xD)

GaN2

Te pongo un ejemplo del this para ver si te haces una idea de como puede funcionar.

class prueba
{
	int tam;
	prueba(int tam)
	{
		this.tam = tam;
	}	
}

Evidentemente, ti pusieras tam = tam el compilador te diría que nanai. Con el this te aseguras que el tam que quieres usar es el propio del objeto.

c0ira

Soy al unico que le ha echo gracia esto "estoy dando java en ingles, es posible que no conozca todos los términos."

En java todo son metodos y clases, para cualquier cosa pon en google "lo que sea" java api Por ejemplo "ArrayList java api" y en la documentacion veras todos los metodos de la clase del objeto con el que estas trabajando lo que reciben lo que devuelven etc

En java puedes guardar los objetos en List y Set. Si no me equivoco Set no mantiene el orden y List si, cuand usas un ArrayList por ej estas usando una clase que internamente implementa el interface List. Si quieres saber que es un interface lee un manual como hemos hecho todos xDD

El metodo estatico sort de la clase collection te ordena un objeto de tipo List segun un criterio,que un metodo sea estatico quiere decir que no necesitas crear un objeto de esa clase para usarlo puedes poner Collections.sort(miLista); (importa la clase collections antes) Puedes hacer esto cada vez que metes un socio o usar un metodo que recorras la lista comparando el cirterio de ordenacion y meterlo en el lugar que le corresponde, en vez de usar miLista.add(Object o) usas miLista.add(int index, Object element) donde index es la posicion. Para usar uno u otro preguntale al profesor a ver como lo quiere el.

Sessions

me acabo de dar cuenta que me he dejado un method.
como hago para quitar un jugador de el tree set.
tampoco me ordena los jugadores.
ya casi he acabdo.

GaN2

En la documentación de java tienes lo que estás pidiendo, de todos modos, para borrar un jugador utiliza el método remove(Object O), que te quita el objeto O del treeset si está presente. Sobre lo de ordenar, se supone que el treeset los ordena al insertarlo, pero no se como. Creo que al crearlo tienes que llamar al constructor con un compator, pero tampoco estoy muy seguro.

NeB1

#31 a lo que me refería es que si aprendes o C o C++, ya tienes algo adelantado en el otro lenguage porque realmente uno es la "mejora" (sobretodo por la orientación a objetos) del otro. y que sin embargo javascript y java no tienen nada nada nada que ver.

Sessions

no, si google lo se usra, el problema es que no entiendo lo de la pagina.
el remove no se como suarlo.
tengo el "treeset.remover(Jugador o)"
pero quiero poder quitar el jugador por nombre y no se como.

dagavi

Si te están poniendo que "remove(object)" [y object es el objeto a borrar] pues es obvio que no puedes decirle "remove(Nombre: String)" (siendo el treeSet de otra cosa que no sean strings)

Viendo el JavaDoc no tiene mayor misterio:

remove(object: o) borra del TreeSet el objeto tal que objetoDelTreeset.equals(o) == true

Así que a primera vista parece que una de estas cosas podría valer:
1) Tu mismo vas iterando por el TreeSet y buscando la persona con nombre que buscas, al encontrarla pues ya tienes su objeto y por lo tanto puedes hacer remove(o) (siendo o el objeto tal que o.getNombre() == nombre que buscamos)

2) Sobrecargando el método equals para que diga que 2 objetos con el mismo nombre son iguales. De esa forma es tan sencillo como crear una nueva persona con el nombre a buscar y borrar y hacer en el treeset el remove con el nuevo objeto creado.

PiTaGoRaS

Si le habláis al pobre de sobrecargar métodos cuando no sabe para qué se utiliza el this lo váis a liar joder xD

Mira, con el TreeSet los elementos se insertan por orden automáticamente, siempre que, como te dije, los elementos que insertas (instancias de la clase Jugador) implementen la interface Comparable. En este caso no hace falta pasar un Comparator al constructor.

Para borrar un jugador por nombre lo más fácil es que utilices un Iterator.

Iterator<Jugador> it = listaJugadores.iterator();
while (it.hasNext()) {
   Jugador j = it.next();
   if (j.getNombre().equals("pepito") && j.getApellido().equals("de los palotes"))
   {
       it.remove();
       break; // no hace falta seguir buscando si no admites duplicados
   }
}
Sessions

justo ahora estaba dando al problema que tenia y resulta que durante el uso de la clase el iterator me da un error, creo que es porque el iterator no se reinicia o algo.
voy a ver si con el codigo que me has dao y el quetengo me laas arreglo
sobrecargar, lo hemos dao, pero el this me pierde.

es como x = x + 1. <= esto es meterle un ostion del 15 a las matematicas.
y hasta que consegui aceptar esto pues eso.

ah, y gracias de nuevo pitagoras.

edit:
me tira este error:

java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1154)
at Club.removePlayer(Club.java:69)
y no entiendo nada.
pero el jugador lo retira.
uso un for loop. no tengo puesto el break, podria ser eso?

me respondo, sí lo era.

PiTaGoRaS

A ver, si te tira esa excepción es porque estás usando el método remove(Object o) de la clase TreeSet y no el de la clase Iterator (que no lleva argumento). No puedes añadir o quitar elementos de la colección mientras estás iterando con un Iterator salvo usando los métodos que éste provee para tal efecto. Si usas el código como yo lo puse debería funcionarte.

En cuando a lo de x = x + 1 no es ninguna patada a las matemáticas, sino que simplemente en Java (y en otros lenguajes) el carácter '=' denota una asignación, no una igualdad entre términos, que sería '=='. De todas formas si te es más fácil de entender utiliza la noticación abreviada x++ que hace el mismo incremento.

Sessions

me cabo de dar cuenta de una movida.
la puta,
cada vez que añado un jugador, el jugador se crea, pero cambia la variables de todos los demas al mismo valor.
si creo un jugador

nombre: kas
apellido: limon
edad: 1
altura: 1

el jugador que ya estaba en la lista:
nombre: fanta
apellido: naranja
edad: 2
altura: 2

cambia a:
nombre: fanta
apellido: naranja
edad: 1
altura: 1

dios, que he hecho??
y como lo arreglo?

PiTaGoRaS

Pues supongo que habrás declarado las variables edad y altura como static xD

Sessions

no, en static no tengo nada.
quiza sea de la estructura de las clases.
a ver que me explico.

clase persona, que tiene las variables que no cmabian.
clase jugador extends persona, que tiene las variable que cambian.

clase bowler extends jugador,

clase wicketkeeper extends jugador, no he probado a ver si estos funcionan.

perdona si no traduzco las ultimas dos clases, que no se como se llaman en castellano.

no se si prodria ser al crear el new jugador, o al imprimor la informacion.

Soltrac

Sin ver tus clases está complicado saber donde está el fallo, es posible q estés imprimiendo mal, porque dudo q esos dos elementos sean estáticos, aunque cualquiera sabe.

Copia con [ code ] constructores, variables y métodos de impresión.

Sessions
public class Jugador extends Persona 
{
    private static int partidasJugadas;
    private static int puntosMarcados;  //esta traduccion hubiese sido la ostia
    private static int vecesPerdido;

}

edit:
por si algun dia alguien lo usa de referencia, el error estaba ahi.
el resto del codigo es =.

Soltrac

Ai! los has declarado static :)

Quita la palabra static de las variables. Static hace que se compartan entre todos los objetos de la clase. Si no los haces static, serán independientes a cada objeto de la clase.

Sessions

ai la puta, mil gracias no lo habia visto, yo mirando por ahi y no los he visto.
pensaba que me habia cargado el programa

PiTaGoRaS

Chico lo que tienes que hacer es leerte algún tutorial de Java básico porque ponerte a escribir código sin tener una mínima idea de lo que haces pues es perder el tiempo. Así no vas a aprender una mierda además.

NeB1

#49 que va que va! yo acabo de entender al fin lo que era "static" y ni siquiera estoy programando lo suyo xDD

Sessions

lo que voy hacer es ir ha hablar con el profe cuando empiece las clases, a ver que es esto de ir a clase y no enterarme de nada.
yo sigo cabreado con el cambio de estructura de clases de javascript a java.
a pesar de que son lenguajes diferentes la estructura que tenian organizada para enseñar javascript era mas adecuada para enseñar un lenguaje que la que usamos ahora.
y me jode porque al final acabo perdiendo el teimpo como dices.
ya pondre a parir al profesor en off-topic cuando acabe esto.

ahora estoy leyendo el ultimo paso que me queda por hacer y no lo entiendo, no se si es porque estoy muerto de sueño o porque no entiendo java o porque ha formulado la frase en ingles de pena.

ves al final lo podria haber puesto en off-topic.

dice noseque de una clase comparator que copare a los jugadores y yo me voy a dormir.
mañana lo leo bien y a ver si lo puedo hacer solo...

mil gracias por todos los consejos y mas que consejos.

PiTaGoRaS

Escribe el enunciado y te podremos echar una mano (no hace falta que lo traduzcas al español...).

B

Si me dices hace 20 años que estas disgustado porque vas a clase y no te enteras de nada aunque atiendas, lo comprenderia. Pero que me digas en 2009 con la de millones de recursos adicionales que tienes para aclarar conceptos que no lo captas es que tienes un grave problema de comprensión. Cuando en tu primer trabajo te pasen una api del tamaño del libro gordo de petete te voy a contar un cuento.

Dod-Evers

Clase jugador
Botón derecho
Source
Generate hashCode() and Equals().

Todo eso en el eclipse.

Y una cosa, métete en la cabeza que no estás aprendiendo un lenguaje de programación o una API del mismo de memoria, estás aprendiendo a programar y eso implica que si te cambian de lenguaje, o de entorno, te adaptes con lo mejor que puedas.

No quiero saber cuando os digan de hacer conexion a base de datos, o cuando tengas que interiorizar el MVC.

JuAn4k4

Edit: Dios he contestado esto leyendo solo la primera pagina, no pense que habia 2.

modena

#30 Poner this. es solo para acer referencia a un metodo/atributo de la misma clase en la que te encuentras, normalmente no hace falta ponerlo, excepto en alguna ocasion como en los constructores cuando quieres asignar una variable que te a venido con el mismo nombre con la que la has declarado, por ejemplo

int x;
String frase;

public Constructor(int x, String frase){
          this.x = x;
          this.frase = frase;
}

De todas maneras seguro que muchos de los presentes saben mas que yo que solo aprendi java ace 1 año jeje

JuAn4k4

#56 del mismo objeto.

GamA

Vaya, parece que #31 me ha quitado de la boca lo que iba a decir.

Para #1 decirle que ir dando palos de ciego no vale de nada. Coje un tutorial java y empieza con lo más sencillo (Hola mundo) y ve avanzando. Es como querer saber hacer edificios en el primer año de arquitectura. Todo a su tiempo.

Soltrac

Te falta aclaración de conceptos y eso no es java, es metodología y teoría de programación. Veo q flaqueas en algunos conceptos como objetos, variables estáticas, constructores, comparadores, etc y eso no es JAVA, eso es programación orientada a objetos pura y dura.

No te desanimes, a mi me costó mucho pasar de estructurado a orientación a objetos porque muchos conceptos no los entendía (tb es pq no pisaba las clases ni para atrás). Al final, con esfuerzo, libros y muchas pruebas se capta todo.

eaglexP

Mirate el libro "Piensa en Java" de Bruce Eckel. Con el puedes aprender lo básico y algunas cosas más avanzadas tanto de la programación orientada a objetos como del lenguaje java (recurre si no a los mil y un tutoriales que pululan hoy día por internet sobre casi cualquier cosa).
Y ponte también en tus favoritos la página de la api de sun (como ya te han dicho antes por aquí) ;D.