Tema resuelto, puede cerrarse.

Un saludo y gracias.
No hace falta que lo elimines.
Buscas el elemento en la colección y lo modificas con un set. ;)
No he conseguido enterarme. Aclárame que objetos intervienen y el panorama general para ver si puedo echarte una mano.
Gracias por vuestro interés, ya conseguí solucionarlo. Ahora tengo otra duda que a ver si me podéis ayudar a resolver.

Estoy creando un programa de gestión y hay un método que consiste en sumar los precios de discos que voy insertando en una lista.

En la clase Tienda tengo:
public class Tienda{
...
...
...
private float Precio;

public Tienda(String... .... , P){
Precio;
}
...
public float getPrecio(){return(Precio);}

...
public void setPrecio(float p){Precio=p;}

Por último en esta clase he creado lo siguiente:
public void Precio2()
{
System.out.println(+Precio);
}

Lo siguiente, en la clase donde se crea la lista y donde tengo la tabla de elementos declarada, y los discos insertados he hecho esto:
public void PrecioTotal()
{
int x=0;
if (insertados>0)
{
while(x<insertados)
{
vector[x].Precio2();
x++;
}
}
}

Ya en el Main tengo lo siguiente:
discoinsertado.PrecioTotal();

Sin embargo al lanzarlo e ir insertando los discos, cuando pido que se me muestre el precio total me salen los precios listados, pero lo que yo quiero es sumarlos. ¿Alguien sabe cómo puedo hacerlo?
Editar/Borrar Mensaje
¿Por que la clase tienda tiene un precio? No tiene sentido.

Tendrías que tener una clase Disco. En esa clase una de los atributos que tendría es "precio" (además de título, autor, etc)
class Disco
{
   public Disco(string nombreDisco, int precioDisco)
   {
     _nombre = nombreDisco
     _precio = precioDisco;
   }

   public int getPrecio() {return _precio;}
   //crear  set para precio del disco

   int _precio;
   
}

La tienda debe tener una colección de discos, y añades nuevos discos a la tienda:
class Tienda
{
   public Tienda (string nombreTienda)
   {
      //guardar nombre de tienda
   }
   
  public int PrecioTotal()
  {
     //Aquí iteras por la colección de discos y sumas todos los precios
  }
}
Tienda t = new Tienda("mi tienda molona de discos");
t.AddDisco( new Disco("Pionner 9", 25);


Una vez tienes la collección de discos, iteras sobre todos los discos y obtienes el precio con getPrecio(), sumando todos en una variable temporal.

Ya sabes cómo hacerlo y tienes lo básico del código, el resto requiere pensar un poquitín ;)
Bueno, mi clase tienda actúa como tu clase discos. En ella tengo los atributos del disco declarados y uno de ellos es el Precio. Luego tengo una clase Lista donde se encuentra los discos insertados y la tabla de 50 discos y en la que he insertado mis métodos. Y en la clase principal es donde creo el método insertar, mediante el que voy insertando los discos mediante un menú que me da la posibilidad de hacerlo, y entonces me pide que vaya insertando los atributos y queda listado. Si directamente le diera los atributos al crear discos, como has hecho, sería más sencillo.

Debemos tener en cuenta que la lista crece o decrece y esos Precios deben adaptarse a ello para seguir sumándose, es algo más complejo de lo que parece y sobre todo para mí, que estoy empezando...
Revisa conceptos porque fallas en algo muy básico.

System.out.println(+Precio);


Esta línea lo que hace es imprimir el resultado de la expresión (+Precio), que por cierto debería dar error.

int x=0;
if (insertados>0)
{
while(x<insertados)
{
vector[x].Precio2();
x++;
}
}


Este if no tiene sentido, si insertados=0, nunca entrará en el bucle while. El bucle for es mas cómodo para recorrer vectores.

No te suma nada porque no estás sumando en ningún sitio. Solo necesitas una variable que acumule la suma y recorrer los elementos de la lista obteniendo las cantidades parciales y sumándolas a esa variable.

Por lo que entiendo tienes una clase tienda y una lista. La tienda tiene un precio total y cada item de la lista un precio individual. Debes calcular el precio de la tienda sumando el precio de todos los discos.

Tienes dos clases, Tienda y Disco. Salvo error, sería algo así.

Class Tienda {

private Disco[] listaDiscos; //Vector, array o cualquier estructura

public Disco getDisco(int i);
public void setDisco(Disco, i);

public float getTotal()
{
float retorno =0;
for(int i=0;i<listaDiscos.length;i++)
retorno += listaDiscos[i].getPrecio();
return retorno;
}
}
public class Disco {

private String nombre; //etc
private float precio;

public void getPrecio.... //Setters y getters

}

}


Trabaja mas la teoría.
Coño, que es un ejercicio, no hacía falta poner todo el código que esto no me parece que sea el foro "resuelve los ejercicios de clase"
zheo escribió:Coño, que es un ejercicio, no hacía falta poner todo el código que esto no me parece que sea el foro "resuelve los ejercicios de clase"


Exagerado! No es el código completo, pero creo que así se va a hacer mejor una idea de que tiene que hacer. Puesto tal cual, ese código no va a funcionar. Porque estamos de acuerdo, este no es el foro "resuelve los ejercicios de clase".
Me refiero a que le has puesto la solución exacta de lo que no sabía hacer, que erar recuperar todos los precios y sumarlos. En mi código obvié eso por algo ;)
Muchas gracias por vuestra ayuda. Sin embargo, no he conseguido implementar el método y al realizar lo recomendado por "PrivateJerson" me salta el típico error Exception in thread "main" java.lang.NullPointerException.

Estoy desesperado!!!!!!!!!
GioSenna escribió:Muchas gracias por vuestra ayuda. Sin embargo, no he conseguido implementar el método y al realizar lo recomendado por "PrivateJerson" me salta el típico error Exception in thread "main" java.lang.NullPointerException.

Estoy desesperado!!!!!!!!!


Probablemente estés usando un método de un objeto que aún no se ha inicializado o contiene un valor nulo.

Para mas información, mira la documentación.

http://java.sun.com/j2se/1.5.0/docs/api ... ption.html

Acostúmbrate a usarla porque en Java es fundamental.
11 respuestas