Foro sobre Java SE > Ayuda a un novato.
Cada vez que creas una nueva cuenta, siguienteNumero siempre se inicializa a cero.
Es un error pensar que las propiedades de una clase se "acumulan" sin más, con cada instancia que se crea.
El número de cuenta deberías crearlo fuera de esa clase, con una propiedad o método externo.
Es que dentro de los requisitos de esa práctica, esta que solamente se pueden establecer unos métodos en concreto, y que la actualización del valor se debe hacer dentro de ese método.
Se que puede parecer un fallo tonto, pero es que soy completamente novato en esto de programar.
Guenas.
En este caso define la variable
private int siguienteNumero = 0;
como
private static int siguienteNumero = 0;
Ahora conservara el valor
Salut
La culpa no es tuya, y aun menos por ser un principiante :)
Pero esa manera de diseñar es... ¡Sin comentarios! :)
Prueba a declarar esa propiedad así:
private static int siguienteNumero ;
Cross posting! :D
La leche... Como no he podido darme cuenta...
Muchísimas gracias chicos.
Y espero poder mejorar ese diseño con el tiempo(espero).
Ahora si que hay algo que no entiendo.
En este codigo:
public void retirar(double importe) throws ExcepcionImporteNoValido, ExcepcionSaldoInsuficiente, ExcepcionOperacionNoPermitida{
if(!marcarVencido()){
throw new ExcepcionOperacionNoPermitida("Operacion no permitida");
}
else{
super.retirar(importe);
}
}
Me da un error el JUnit que dice:Expected exception ExcepcionOperacionNoPermitida.
¿Por que?
Solucionado tambien... Y por que no me doy cuenta de estas cosas antes?
Hola, mi nombre es Jorge Bodega, y soy estudiante de primer año de Ingeniería Informática. Como tal, estoy estudiando el lenguaje de programación JAVA, pero nunca antes lo había hecho.
En consecuencia, tengo grandes problemas a la hora de realizar prácticas.Mi nota no es para que nadie me haga el trabajo, faltaría más, pero necesito ayuda en algunos métodos donde tengo errores y no se solucionarlos. Agradecería muchísimo que alguien me echase una mano.
Gracias de todas formas.
PD: Este es el código:
public abstract class Cuenta {
private int siguienteNumero = 0;
private int numero;
private double saldo;
private Cliente titular;
private Date fechaApertura;
public Cuenta (Cliente titular,double saldo)
throws ExcepcionClienteNoValido,ExcepcionImporteNoValido{
this.titular=titular;
this.saldo=saldo;
fechaApertura= new Date();
numero = siguienteNumero;
siguienteNumero++;
if (titular == null){
throw new ExcepcionClienteNoValido();
}
if (saldo <= 0){
throw new ExcepcionImporteNoValido();
}
if((titular == null)&&(saldo <= 0)){
throw new ExcepcionClienteNoValido();
}
}
public int getNumero (){
return numero;
}
public Cliente getTitular(){
return titular;
}
public double getSaldo(){
return saldo;
}
public void setSaldo( double importeNuevo){
this.saldo= importeNuevo;
}
public Date getFechaApertura(){
return fechaApertura;
}
public void ingresar(double importe)
throws ExcepcionImporteNoValido,ExcepcionOperacionNoPermitida, ExcepcionClienteNoValido{
if(importe <=0){
throw new ExcepcionImporteNoValido();}
else {
saldo = saldo + importe;
}
}
public void retirar (double importe)
throws ExcepcionImporteNoValido,ExcepcionSaldoInsuficiente, ExcepcionOperacionNoPermitida {
if(importe <= 0){
throw new ExcepcionImporteNoValido();}
else if(importe>saldo){
throw new ExcepcionSaldoInsuficiente();}
else {
saldo = saldo - importe;
}
}
public String toString(){
return getNumero() + ":" + getSaldo() + "(" + titular.getNif() + ")" + titular.getNombre();
}
public abstract double disponibilidad();
}
El principal problema es que al crear una cuenta nueva, se supone que se debería ir actualizando el número, pero no lo hace.