Autor
|
Tema: Duda con ejercicio de Java en Netbeans! (Leído 24,136 veces)
|
KlaHavoK
Desconectado
Mensajes: 8
|
Saludos a todos! En la Universidad me mandaron un ejercicio de Java que no he logrado hacer funcionar como se debe. Es el típico ejercicio de la cuenta bancaria, y por más que he buscado en Internet no consigo un ejercicio parecido al que me tocó (todos son o mas complicados o más sencillos). El ejercicio va asi: >> Hay una clase Cuenta que tiene los atributos: tipoCuenta (puede ser ahorro, corriente), titular y saldo y sus respectivos setters/getters. >> Hay una clase Util donde se realizará la parte lógica del programa. Se mostrará un menú de opciones (1 para Crear Cuenta, 2 para Depositar, 3 para Retirar, 4 para Mostrar Saldo y 5 para Salir). Adicionalmente los métodos de Depósito y Retiro deben estar en esta clase. >> Una clase Principial con el main. Mis dudas son las siguientes: 1) Estan pidiendo que almacene las cuentas en un arreglo de cuentas (arregloCuentas), creo que eso lo hice bien en teoría. El problema es que piden que los métodos de retiro y depósito estén en Util y no en Cuenta (En mi ejercicio los tengo en Cuenta), pero ¿Cómo hago para llamar a esos métodos cuando estan en Util? Porque si hago arregloCuenta[id].getSaldo() estando los métodos en Util no me corre y da error. 2) De la manera en que hice el programa, el programa crea un objeto de la clase Cuenta y lo guarda en el índice ID de arregloCUentas. Hay alguna manera de acceder a un objeto de dicho arreglo sin ID? Acá les dejo mi código tal como está. Así funciona, pero me estan pidiendo que pase los métodos depósito y retiro a la clase Util, y ahi se vuelve un ocho todo! public class Principal {
public static void main(String[] args) { Util u = new Util(); u.menu(); } }
public class Cuenta { private String tipoCuenta; private String titular; private double saldo;
public Cuenta(String tipoCuenta, String titular, double saldo) { this.tipoCuenta = tipoCuenta; this.titular = titular; this.saldo = saldo; } public String getTipoCuenta() { return tipoCuenta; } public String getTitular() { return titular; }
public void setTitular(String titular) { this.titular = titular; }
public void setTipoCuenta(String tipo) { this.tipoCuenta = tipo; }
public double getSaldo() { return saldo; }
public void setSaldo(double saldo) { this.saldo = saldo; } public void retiro(double monto) { this.saldo = saldo - monto; } public void deposito(double monto) { this.saldo = saldo + monto; } } import java.util.Scanner;
public class Util {
Scanner input = new Scanner(System.in); String opcion; Cuenta[] arregloCuenta = new Cuenta[20]; boolean salir = false;
public void menu() { do { System.out.println("1 para Crear Cuenta.\n2 para Retiro.\n3 para Deposito.\n4 para mostrar Saldo\n5 para Salir"); opcion = input.next();
switch (opcion) { case "1":
System.out.println("Introduzca un ID de cuenta: "); int id = input.nextInt(); System.out.println("Introduzca tipo de cuenta: "); String tipoCuenta = input.next(); System.out.println("Introduzca nombre del titular: "); String titular = input.next(); System.out.println("Introduzca saldo: "); double saldo = input.nextDouble(); Cuenta nuevaCuenta = new Cuenta(tipoCuenta, titular, saldo); arregloCuenta[id] = nuevaCuenta; break;
case "2":
System.out.println("Introduzca ID de cuenta: "); id = input.nextInt(); System.out.println("Introduzca cantidad a retirar: "); double retiro = input.nextDouble(); arregloCuenta[id].retiro(retiro); System.out.println("Retiró de la cuenta: " + retiro + ".\nEl nuevo saldo es de: " + arregloCuenta[id].getSaldo()); break;
case "3":
System.out.println("Introduzca numero de cuenta: "); id = input.nextInt(); System.out.println("Introduzca cantidad a depositar: "); double deposito = input.nextDouble(); arregloCuenta[id].deposito(deposito); System.out.println("Depositó a la cuenta: " + deposito + ".\nEl nuevo saldo es de: " + arregloCuenta[id].getSaldo()); break;
case "4":
System.out.println("Introduzca numero de cuenta: "); id = input.nextInt(); System.out.println("Introduzca cantidad a depositar: "); System.out.println(arregloCuenta[id].getSaldo()); break;
case "5": salir = true; break;
} } while (salir == false); } }
Espero me puedan ayudar! Llevo desde el Jueves dándole duro y leyendo y consultando pero nada! Mil Gracias por tomarse su tiempo en leer mi post!
|
|
|
En línea
|
|
|
|
Alien-Z
Desconectado
Mensajes: 177
C++ Programmer
|
1) Estan pidiendo que almacene las cuentas en un arreglo de cuentas (arregloCuentas), creo que eso lo hice bien en teoría. En realidad, si no sabes cuántas cuentas vas a menejar a la vez, no puedes usar un array porque el usuario podrá crear más cuentas de las que caben en él. Debes usar las colecciones que heredan de la clase List<T>: ArrayList<Cuenta> listaCuentas = new ArrayList<Cuenta>();
LinkedList<Cuenta> listaCuentas = new LinkedList<Cuenta>();
Cualquiera de los dos te vale, la diferencia es que los métodos de acceso/modificación de ArrayList son rápidos pero añadir o eliminar un elemento resulta ineficiente. En cambio los métodos de acceso/modificación de LinkedList son ineficientes pero para añadir o eliminar un elemento tienen un menos coste que ArrayList. El problema es que piden que los métodos de retiro y depósito estén en Util y no en Cuenta (En mi ejercicio los tengo en Cuenta), pero ¿Cómo hago para llamar a esos métodos cuando estan en Util? Porque si hago arregloCuenta[id].getSaldo() estando los métodos en Util no me corre y da error. Porque no se refieren a los métodos get/set. Lo que te dice es lo siguiente: 1- Dentro de la clase Cuenta crear los métodos: ... public double getSaldo() { //Consulta cuánto saldo tenemos, el valor NO se modifica return saldo; } public void setSaldo(double saldo) { //Servirá tanto para depositar como para retirar saldo this.saldo = saldo; } ...
2- Dentro de la clase Util crear los métodos: public void depositar(Cuenta cuenta, double cantidad) { //Deposita en la cuenta la cantidad indicada cuenta.setSaldo(cuenta.getSaldo() + cantidad); //El saldo que teníamos más la cantidad } public void retirar(Cuenta cuenta, double cantidad) { //Retira en la cuenta la cantidad indicada if(cuenta.getSaldo() >= cantidad) { //Si hay dinero suficiente para retirar cuenta.setSaldo(cuenta.getSaldo() - cantidad); //El saldo que teníamos menos la cantidad } else { System. out. println("No hay saldo suficiente para retirar esa cantidad."); //Si no hay dinero suficiente notifícalo por pantalla } }
2) De la manera en que hice el programa, el programa crea un objeto de la clase Cuenta y lo guarda en el índice ID de arregloCUentas. Hay alguna manera de acceder a un objeto de dicho arreglo sin ID? No, siempre necesitas un índice para acceder a un elemento de un array. Sin embargo ya te he comentado que si no sabes el número de cuentas que vas a tener no puedes utilizar un array sino una colección. Saludos.
|
|
« Última modificación: 28 Julio 2013, 20:56 pm por Alien-Z »
|
En línea
|
|
|
|
KlaHavoK
Desconectado
Mensajes: 8
|
Mil gracias Alien-Z!! Ya entendí lo de los métodos en Util y realicé los cambios pertinentes y quedó excelente! Quería aprovechar de preguntar otra duda que tengo: (seguimos usando arreglos, ya que en la Uni aún no nos han dado colecciones y si me adelanto de seguro el profesor me la aplicará!) >> Supongamos que Cuenta tiene un atributo más del tipo int llamado numeroCuenta que almacenará el número de la cuenta. Cómo hago para poder acceder a un determinado número de cuenta sin necesidad de usar el ID? Es decir, supongamos que en arregloCuenta[1] tengo un objeto de tipo cuenta con un numeroCuenta 1234... Cómo hago para (por ejemplo) cuando seleccione la opción de depositar en mi programa, que el programa me pida el número de cuenta y de ahí acceda a la posición en el arreglo donde se encuentra la cuenta con dicho númeroCuenta y realizar las aciones pertinentes? O es esto imposible? >> Hoy cambiaron un poco el ejercicio. Ahora al parecer necesito una clase Cliente que va a tener un ID y un arreglo de cuentas ( arregloCuentasCliente). Entonces en vez de crear una cuenta en la opcion 1, crearé un Cliente y lo almacenaré en un arregloClientes junto con la información de su cuenta. El cliente tiene un arregloCuentasCliente ya que el puede tener varias cuentas. Cómo hago la lógica de esto? Osea, sé cómo crear el cliente y almacenarlo; pero cómo hago si quiero añadir una cuenta adicional a un cliente ya creado?Esas son mis dudas. Alien-Z has sido de más utilidad que el testarudo de mi profesor hjahaha. Mil gracias!
|
|
|
En línea
|
|
|
|
Alien-Z
Desconectado
Mensajes: 177
C++ Programmer
|
>> Supongamos que Cuenta tiene un atributo más del tipo int llamado numeroCuenta que almacenará el número de la cuenta. Cómo hago para poder acceder a un determinado número de cuenta sin necesidad de usar el ID? Es decir, supongamos que en arregloCuenta[1] tengo un objeto de tipo cuenta con un numeroCuenta 1234... Cómo hago para (por ejemplo) cuando seleccione la opción de depositar en mi programa, que el programa me pida el número de cuenta y de ahí acceda a la posición en el arreglo donde se encuentra la cuenta con dicho númeroCuenta y realizar las aciones pertinentes? O es esto imposible? Ya veo lo que quieres hacer, para esto tendrás que: 1- Recoger el número de cuenta en una variable. 2- Crear un bucle que vaya comparando el número de cuenta que tienes almacenada en la variable con los números de cuenta de todas las cuentas del array. boolean encontrada = false; //Cuando encontremos la cuenta, finalizará el bucle final int totalCuentas = 10; //Aqui pondrás el total de cuentas que tienes int i = 0; while(i < totalCuentas && !encontrada) { //Mientras no nos salgamos del array y no encontremos la cuenta if (arrayCuentas[i].getNumCuentas() == numCuentas) { //Si el número de cuenta es igual al que buscamos encontrada = true; //Nos salimos del bucle } i++; } if (i != totalCuentas) { //ATENCION: Hay que comprobar si nos hemos salido del bucle porque hemos encontrado la cuenta o porque hemos recorrido todo el array y no está //Colocamos las instrucciones que se ejecutarán una vez encontrada }
>> Hoy cambiaron un poco el ejercicio. Ahora al parecer necesito una clase Cliente que va a tener un ID y un arreglo de cuentas (arregloCuentasCliente). Entonces en vez de crear una cuenta en la opcion 1, crearé un Cliente y lo almacenaré en un arregloClientes junto con la información de su cuenta. El cliente tiene un arregloCuentasCliente ya que el puede tener varias cuentas. Cómo hago la lógica de esto? Osea, sé cómo crear el cliente y almacenarlo; pero cómo hago si quiero añadir una cuenta adicional a un cliente ya creado?
Es interesante darle vueltas a estos problemas. Ahora en el menú tendrás que dar dos opciones: 1- Nuevo Cliente 2- Nueva cuenta 3- ... Cuando el usuario elija crear una nueva cuenta tendrás que preguntarle obligatoriamente a qué cliente pertenece esta cuenta, recoges el dato y vas comparando en el array de clientes (viene a ser el mismo bucle que el apartado anterior) hasta dar con el propietario de la nueva cuenta. La creas y la almacenas en el array de éste cliente. Saludos.
|
|
« Última modificación: 29 Julio 2013, 20:20 pm por Alien-Z »
|
En línea
|
|
|
|
KlaHavoK
Desconectado
Mensajes: 8
|
Excelente Alien-Z! Mil gracias por tu ayuda!! Disculpa la tardía respuesta y agradecimiento, estaba sin Internet! Mi programa quedó genial Saludos!
|
|
|
En línea
|
|
|
|
Alien-Z
Desconectado
Mensajes: 177
C++ Programmer
|
No hay de qué.
Un saludo.
|
|
|
En línea
|
|
|
|
marish
Desconectado
Mensajes: 1
|
1.Se requiere hacer un programa para saludar clientes de un banco, la idea es que el usuario digite su nombre y el programa responda con un saludo incluyéndolo. Por ejemplo: Si el cliente (usuario) digita “Pedro” y luego enter, el programa deberá responder “Hola Pedro, bienvenido al Banco REMINGTON”.
2. Una empresa fabricante de tapas de acero, especializada en figuras planas regulares, requiere un programa que le permita calcular el área de corte de acuerdo a la solicitud de sus clientes. El cliente deberá indicar la forma de la figura de una de las siguientes opciones: • círculo, • cuadrado, • triángulo, • paralelogramo y luego dar las medidas del perímetro así: Para el círculo deberá dar la longitud del perímetro del círculo o el radio del mismo Para el cuadrado deberá dar la longitud de los cuatro lados que lo conforman Para el triángulo deberá dar la longitud de los tres lados que lo conforman Para el paralelogramo deberá dar la longitud de los cuatro lados que lo conforman.
3.Un matemático requiere con urgencia un programa que permita determinar cuál es el número mayor, el promedio y cuál es el menor, de una lista de 4 números.
|
|
|
En línea
|
|
|
|
arthur
Desconectado
Mensajes: 1
|
Tengo una duda... Si quisiera intercambiar o transferir el saldo de una cuenta a otra como deberia de hacerlo???
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
1.Se requiere hacer un programa para saludar clientes de un banco, la idea es que el usuario digite su nombre y el programa responda con un saludo incluyéndolo. Por ejemplo: Si el cliente (usuario) digita “Pedro” y luego enter, el programa deberá responder “Hola Pedro, bienvenido al Banco REMINGTON”.
2. Una empresa fabricante de tapas de acero, especializada en figuras planas regulares, requiere un programa que le permita calcular el área de corte de acuerdo a la solicitud de sus clientes. El cliente deberá indicar la forma de la figura de una de las siguientes opciones: • círculo, • cuadrado, • triángulo, • paralelogramo y luego dar las medidas del perímetro así: Para el círculo deberá dar la longitud del perímetro del círculo o el radio del mismo Para el cuadrado deberá dar la longitud de los cuatro lados que lo conforman Para el triángulo deberá dar la longitud de los tres lados que lo conforman Para el paralelogramo deberá dar la longitud de los cuatro lados que lo conforman.
3.Un matemático requiere con urgencia un programa que permita determinar cuál es el número mayor, el promedio y cuál es el menor, de una lista de 4 números.
wt hell, hommie, es un post muy viejo, y de paso pides que te hagan la tarea? por diosssss Tengo una duda... Si quisiera intercambiar o transferir el saldo de una cuenta a otra como deberia de hacerlo??? y tu tampoco te escapas pon código que llevas y se te ayudara
|
|
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ejercicio java duda
Ejercicios
|
LakroMC
|
1
|
5,504
|
2 Noviembre 2009, 20:58 pm
por leogtz
|
|
|
Trabajando Con Colores En Java Y Netbeans (duda)
Java
|
TeclaFurtiva
|
1
|
4,706
|
16 Agosto 2012, 05:46 am
por TeclaFurtiva
|
|
|
ejercicio java en Netbeans
Java
|
judcalo
|
3
|
5,213
|
27 Julio 2013, 07:10 am
por EJSUCRE
|
|
|
ayuda adicionar el JFileChooser netbeans (java)
Java
|
jansen23
|
1
|
2,837
|
14 Agosto 2013, 00:32 am
por Alien-Z
|
|
|
Duda con el JFrame en Java Netbeans
Java
|
F.F
|
0
|
2,946
|
27 Septiembre 2014, 20:34 pm
por F.F
|
|