Arreglo De Objetos En Java

Encuentra en el sitio

Últimos Artículos

Este tipo de arreglo tiene la misma definición de un Arreglo de datos Primitivos, estos difieren en la instancia que poseen, mas claramente, estos se crean en base a una clase ya existente y definida con sus atributos y métodos correspondientes, recordando: Una clase es la definición de un objeto, ya que esta posee los atributos (características) y funciones (métodos) que describen un objeto. La definición de un Arreglo de Objetos es la misma que un Arreglo de datos Primitivos, su syntaxis es de la siguiente forma:

clase nombreArreglo[] = new clase [numeroElementos]; 

 

Descargar Ejemplo Arreglo de Objetos en Java

Solo tienes que realizar una acción social para descargar el código fuente del ejemplo, y usarlo sin problemas en Netbeans o eclipse. Ayuda a que este articulo llegue a mas personas.


 

Como Usar un Arreglo de Objetos en Java?

El uso de este tipo de arreglos es para usar adecuadamente los espacios de memorias reservados por un arreglo, ya que no es lo mismo tener en un campo un valor (De un mismo tipo) que varios valores (De diferentes tipos), pero ya que una imagen vale mas que mil palabras, espero que con la siguiente imagen quede algo mas claro 🙂

Diferencia Arreglo de Objetos y Arreglo de datos Primitivos

Como apreciamos en la anterior imagen podemos almacenar mas de un dato en un solo campo de un arreglo, y no solo mas de un valor, sino también del mismo tipo, supongamos que tenemos un estudiante, este tiene un Código, Nombre, Notas (n1, n2, n3, nF); entonces, en un solo campo podemos almacenar todos los datos de un solo estudiante (Int, String, Double, Double, Double, Double, respectivamente).

Para almacenar datos en este tipo de arreglos es necesario crear un Objeto para manipular la inserción de cada dato en el campo del arreglo. Como ejemplo, mostraré como ingresar, mostrar, buscar y eliminar los datos básicos de un Usuario de Banco (Código, nombre, apellido, teléfono, saldo).

Ejemplo Arreglo de Objetos o Arreglo de Clases

Para empezar crearemos nuestra clase con los datos del Usuario (Código, nombre, apellido, teléfono, saldo) y el encapsulamiento de estos para la manipulación:  

Ahora la clase principal, en la cual estará el menú con las operaciones que se pueden realizar con este tipo de arreglos: 

A tener en cuenta, los métodos set* son los que asignan los valores y los métodos get* son para obtener los valores; de la linea 57 a la 65, podemos ver como es el proceso para asignar valores y usar cada campo del arreglo; en el metodo eliminar, se uso una Modificación en el Tamaño del Arreglo, para hacer el arreglo algo dinamico, y no matarnos la cabeza con redundancia en los códigos almacenados.

Resumen
Fecha Publicación
Resumen articulo
Ejercicio practico de como crear, usar y manipular Arreglo de Objetos o arreglos de clases en java, explicacion mediante un ejercicio básico de un banco y sus operaciones.
Calificación
51star1star1star1star1star
  1. Avatar for belial9826 Jose Hernandez dice:

    una duda como le arias en el ejemplo UserBanco en caso de que el tamaño fuera ingresado por el usuario

  2. Avatar for belial9826 Jose Hernandez dice:

    una duda en caso de que el tamaño del vector fuera ingresado por el usuario ,como lo arias en la clase UserBanco

  3. Avatar for belial9826 Carlos dice:

    Linea 67. Aun no logro entender para que es esa linea. Explicacion por favor.

  4. Avatar for belial9826 marco vinicio cain yuquilema dice:

    buenos dias amigos alguien que me ayude con este problema llebo 2 horas intentando y no doy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    La empresa eléctrica, desea calcular el consumo generado por sus abonados. Por cada uno de ellos se ingresará el código del abonado y el consumo de electricidad en Kw/h. Se pide:
    a) Ingresar abonados o clientes hasta que se ingrese una marca de fin de datos, en la cual el código del abonado sea -99.
    b) Mostrar el listado de los abonados, el consumo en kw/h, y también mostrar el consumo en dólares pero teniendo en cuenta que si el consumo ingresado es mayor a 125 kw/h cobrarlo a 6 cvos, en otro caso cobrarlo a 4 cvos.
    c) Mostrar el número de abonados ingresados
    d) Mostrar el consumo de kw/h de todos los abonados.
    e) Mostrar el total de cobro que ha realizado la empresa eléctrica.
    Proyecto: Taller de Estudiante 1 y Estudiante 2.
    Clase: Tablas
    Realizar un programa en Java, que realice y muestre las tablas de multiplicar del 2 al 6, y sume sus valores individuales y en conjunto.

  5. Avatar for belial9826 jairo dice:

    Que claro eres. Gracias

  6. Avatar for belial9826 HONORIO SANCHEZ dice:

    disculpe en mi colegio me dejaron algo paresido pero en uno de los casos me mide que modifique algunos datos
    el problema es el siguiente:
    El almacén Pasteles y más desea un programa el cual contenga el siguiente menú de opciones:
    a.- Altas
    b.-Bajas
    c.-Consultas
    d.-Modificaciones
    e.-Ventas
    f.- Reporte de ventas
    g.-Salida del programa

    En la opción de altas deberá preguntar la clave del producto, precio, descripción y cantidad en existencia.
    Deberá guardar la información en un vector el cual deberá tener capacidad para 100 productos. No debe capturar claves iguales.
    En la opción de bajas deberá preguntar la clave del producto y deberá eliminar toda la información que le corresponde.
    En la opción de consultas deberá presentar el siguiente menú:
    1.- Consultas por clave
    2.- Consultas por nombre
    3.- Consultas generales ordenadas por clave
    4.- Consultas generales ordenadas por nombre
    En la opción de modificaciones deberá preguntar la clave del producto que desea modificar y posteriormente presentará el siguiente menú:
    1.-Modificar descripción
    2.-Modificar precio
    3.-Modificar cantidad en existencia
    En la opción de ventas deberá preguntar la clave del producto que se desea vender y el mes en el que se realiza la venta. Al momento de realizar la venta se deberá disminuir la cantidad en existencia de ese producto y se almacenará el monto de la venta en una matriz en el mes correspondiente.
    En la opción de reporte de ventas deberá imprimir el importe de las ventas por mes.
    El programa se repetirá mientras no se seleccione la opción de salir.
    Mi codigo es este:

    class protien {
    int clave, existencia, fecha;
    double precio;
    String descripcion;
    String nombre;

    public int getClave() {
    return clave;}
    public void setClave(int clave) {
    this.clave = clave; }
    public int getExistencia() {
    return existencia; }
    public void setExistencia(int existencia) {
    this.existencia = existencia; }
    public double getPrecio() {
    return precio;}
    public void setPrecio(double precio) {
    this.precio = precio;}
    public String getDescripcion() {
    return descripcion;}
    public void setDescripcion(String descripcion) {
    this.descripcion = descripcion; }
    public String getNombre() {
    return nombre; }
    public void setNombre(String nombre) {
    this.nombre = nombre;}
    public int getFecha() {
    return fecha;}
    public void setFecha(int fecha) {
    this.fecha = fecha; } }

    CLASE 2:
    import javax.swing.JOptionPane;
    public class i {
    int conpro = 0, clave = 1;
    protien producto[] = new protien[10];
    public i() {
    String opcion;
    int op = 0;
    do {
    opcion = JOptionPane.showInputDialog(null, “seleccionar una opcion: \n ”
    + “1.- altas\n”
    + “2.- bajas\n”
    + “3.- consultas\n”
    + “4.- modificaciones\n”
    + “5.- ventas\n”
    + “6.- reporte de ventas\n”
    + “7.- salir de programacion\n”
    + “ingrese una opccion [1-7]”, “Pasteles y mas”, JOptionPane.QUESTION_MESSAGE);

    if (opcion != null && !opcion.equals(“”)) {
    op = Integer.parseInt(opcion);
    switch (op) {
    case 1:
    altas();
    break;
    case 2:
    bajas();
    break;
    case 3:
    consultas();
    break;
    case 4:
    modificasiones();
    break;
    case 5:
    ventas();
    break;
    case 6:
    reportedeventas();
    break;
    case 7:
    JOptionPane.showMessageDialog(null, “que tenga un buen dia”);
    System.exit(0);
    break;
    default:
    JOptionPane.showMessageDialog(null, “Eliga una opcion valida\n”, “ERROR OPCION”, JOptionPane.WARNING_MESSAGE);
    }
    }
    } while (op != 7);
    }
    public void altas() {
    int clave, existencia;
    double precio;
    String descripcion;
    String nombre;
    clave = Integer.parseInt(JOptionPane.showInputDialog(null, “ingrese la clave delproducto: “));
    nombre = JOptionPane.showInputDialog(null, “ingrese el nombre del producto: “);
    existencia = Integer.parseInt(JOptionPane.showInputDialog(null, “ingrese el numero de existencia de producto: “));
    descripcion = JOptionPane.showInputDialog(null, “ingrese la descripcio del producto: “);
    precio = Double.parseDouble(JOptionPane.showInputDialog(null, “ingrese el precio del producto: “));

    protien temp = new protien();

    temp.setClave(clave);
    temp.setNombre(nombre);
    temp.setDescripcion(descripcion);
    temp.setPrecio(precio);
    temp.setExistencia(existencia);
    producto[conpro] = temp;
    conpro++;
    clave++;
    }
    public void bajas() {
    int c;
    protien alumTemp[] = new protien[conpro-1];
    c = Integer.parseInt(JOptionPane.showInputDialog(null, “Digite el codigo del producto: “));
    if (c <= conpro) {
    for (int i=0; i<conpro; i++) {
    if (c == producto[i].getClave()) {
    continue;
    } else {
    if (producto[i].getClave() c) {
    producto[i].setClave(i);
    alumTemp[i-1] = producto[i];
    }
    }
    }
    producto = null;
    clave–;
    conpro–;
    producto = new protien[10];
    for (int i=0; i<alumTemp.length; i++) {
    producto[i] = alumTemp[i];
    }
    } else {
    JOptionPane.showMessageDialog(null, "El producto se a eliminar ya no existe !!!");
    }

    }

    public void consultas() {

    String opcion;
    int op = 0;
    do {
    opcion = JOptionPane.showInputDialog(null, "Consultar por: \n "
    + "1.- clave\n"
    + "2.- nombre\n"
    + "3.- consulta general ordenadas por clave\n"
    + "4.- consulta general ordenados por nombre\n"
    + "5.- regresar al menu anterior"
    + "6.- salir\n"
    + "ingrese una opccion [1-6]", "Pasteles y mas", JOptionPane.QUESTION_MESSAGE);

    if (opcion != null && !opcion.equals("")) {
    op = Integer.parseInt(opcion);

    switch (op) {

    case 1:
    clave();
    break;
    case 2:
    nombre();
    break;
    case 3:
    pornombre();
    break;
    case 4:
    porclave();
    break;
    case 5:
    return;

    case 6:
    JOptionPane.showMessageDialog(null, "que tenga un buen dia");
    System.exit(0);
    break;
    default:
    JOptionPane.showMessageDialog(null, "Eliga una opcion valida\n", "ERROR OPCION", JOptionPane.WARNING_MESSAGE);

    }
    }
    } while (op != 6);
    }

    public void clave() {
    String ax;
    int c;

    ax = JOptionPane.showInputDialog(null, "Digite introduca la clave a buscar");
    if (ax != null && !ax.equals("")) {
    c = Integer.parseInt(ax);
    ax = "";
    if (conpro != 0) {
    for (int i = 0; i < conpro; i++) {
    if (producto[i].getClave() == c) {
    ax = "";
    ax += "Codigo : " + producto[i].getClave() + "\n"
    + "Nombre : " + producto[i].getNombre() + "\n"
    + "Descripcio : " + producto[i].getDescripcion() + "\n"
    + "precio : " + producto[i].getPrecio() + "\n"
    + "Existencia : " + producto[i].getExistencia() + "\n";
    break;
    } else {
    ax = "No se ha encontrado el producto :(";
    }
    }
    JOptionPane.showMessageDialog(null, ax);
    }

    }

    }

    public void pornombre() {

    }

    public void porclave() {

    }

    public void nombre() {}

    public void modificasiones() {
    String opcion;
    int op = 0;
    do {
    opcion = JOptionPane.showInputDialog(null, "modificar: \n "
    + "1.- descripcion\n"
    + "2.- precio\n"
    + "3.- cantidad existenci\n"
    + "5.- regresar al menu anterior"
    + "6.- salir\n"
    + "ingrese una opccion [1-6]", "modificasiones", JOptionPane.QUESTION_MESSAGE);

    if (opcion != null && !opcion.equals("")) {
    op = Integer.parseInt(opcion);

    switch (op) {

    case 1:
    descripcion();
    break;
    case 2:
    precio();
    break;
    case 3:
    cantidad();
    break;
    case 4:
    return;

    case 5:
    JOptionPane.showMessageDialog(null, "que tenga un buen dia");
    System.exit(0);
    break;
    default:
    JOptionPane.showMessageDialog(null, "Eliga una opcion valida\n", "ERROR OPCION", JOptionPane.WARNING_MESSAGE);

    }
    }
    } while (op != 5);

    }

    public void ventas() {

    int clave;
    int fecha;

    clave = Integer.parseInt(JOptionPane.showInputDialog(null, "ingrese la clave delproducto: "));
    fecha = Integer.parseInt(JOptionPane.showInputDialog(null, "ingrese la fecha de venta "));

    protien temp = new protien();

    temp.setClave(clave);
    temp.setFecha(fecha);

    producto[conpro] = temp;
    conpro++;
    clave++;

    }

    public void reportedeventas() {

    }

    public void precio() {

    }

    public void descripcion() {

    }

    public void cantidad() {

    }

    public static void main(String[] args) {
    i w = new i(); //creacion del objeto w, llamado al constructor de la clase ArrObj
    System.exit(0);
    }

    }

  7. Avatar for belial9826 userJava dice:

    donde tienes la clase userBanc? disculpe y gracias por la ayuda

  8. Avatar for belial9826 nicole dice:

    hola tengo un gran problema nose como empezar un trabajo en java usando eclipse , es un partido de fútbol,con las tablas jugador ,equipo,partido al que tengo que ir ingresado a una base de datos donde te pide que ;
    Ingresar un equipo y sus jugadores
    Crear los partidos
    Finalizar un partido
    Mostrar la lista de posiciones
    Eliminar un jugador

  9. Avatar for belial9826 Eusebio dice:

    hola muy buen aporte, amigo me podrías ayudar con un programa en java, lo que tengo que hacer es hacer una lista de tipo concepto gasto, que tiene: cantidad presupuestada, cantidad, gastada, clave, concepto,. lo que quiero es hacer una clase especial que manipule el arreglo, con interfaces, osea crear una ListaConceptoGasto, en la lista que pueda agregar otro concepto, ver si existe la clave, ver la posición de la clave, incluir un get que buscara objeto que tenga una clave y lo entregue para la clave, imprimir la lista, y ordenar ya sea por clave o saldo.

    tengo el arreglo, pero no se como crear otra clase para ListaConceptoGasto:

    clase:

    import javax.swing.*;

    public class ConceptoGasto {

    private String clave;
    private String concepto;
    private double cantidadpresupuestada;
    private double cantidadgastada;
    private double b;

    public ConceptoGasto()
    {
    this.clave= new String ();
    this.concepto= new String ();
    this.cantidadpresupuestada=cantidadpresupuestada;
    this.cantidadgastada=cantidadgastada;
    this.b=0;
    }

    public String getclave()
    {
    return clave;
    }

    public void setclave(String clave)
    {
    this.clave=clave;
    }

    public String getconcepto()
    {
    return concepto;
    }

    public void setconcepto(String concepto)
    {
    this.concepto=concepto;
    }

    public double getcantidadpresupuestada()
    {
    return cantidadpresupuestada;
    }

    public void setcantidadpresupuestada(double cantidadpresupuestada)
    {
    this.cantidadpresupuestada=cantidadpresupuestada;
    }

    public double getcantidadgastada()
    {
    return cantidadgastada;
    }

    public void setcantidadgastada(double cantidadgastada)
    {
    this.cantidadgastada=cantidadgastada;
    }

    public void imprimir()
    {
    JOptionPane.showMessageDialog(null,” ” + ” “+ this.clave+ ” ” + this.concepto + ” ” + saldo() + ” ” + this.cantidadgastada+ ” “+ this.b);
    }

    public void sumarGasto(double gasto)
    {
    cantidadgastada =this.cantidadgastada+gasto;
    }

    public void cantidadPresupuestada()
    {
    String cantidad= JOptionPane.showInputDialog(null,”ingresar la cantidad presupuestada:”);
    this.b= Double.parseDouble(cantidad);
    }

    public double saldo()
    {
    double saldo =this.b – this.cantidadgastada;
    //JOptionPane.showMessageDialog(null,”la cantidad presupuestada es: ” + saldo);
    return saldo;
    }

    }

    ARREGLO:

    import javax.swing.JOptionPane;
    public class Prueba2
    {
    public static void main() {

    int opcion,c,i = 0;

    String p = JOptionPane.showInputDialog(null,”Numeros de arreglos”);
    c = Integer.parseInt(p);

    ConceptoGasto Re[]= new ConceptoGasto[10];
    do
    {
    String CadMenu=”Menu de conceptos \n\n”;
    CadMenu= CadMenu+”1. ingresar datos\n”;
    CadMenu= CadMenu+”2. sumar gastos\n”;
    CadMenu= CadMenu+”3. saldo\n”;
    CadMenu= CadMenu+”4. mostrar datos\n”;
    CadMenu= CadMenu+”5. Salir\n”;
    String r=JOptionPane.showInputDialog(CadMenu);
    opcion=Integer.parseInt(r);
    switch(opcion)
    {
    case 1:
    for(i = 0; i<c; i++)
    {
    Re[i] =new ConceptoGasto();
    Re[i].setclave(JOptionPane.showInputDialog("ingrese la clave:"));
    Re[i].setconcepto(JOptionPane.showInputDialog("ingrese la concepto:"));
    Re[i].cantidadPresupuestada();
    }
    break;
    case 2:
    for(i = 0; i<c; i++)
    {
    String gasto = JOptionPane.showInputDialog(null,"sumar gastos");
    Re[i].sumarGasto(Double.parseDouble(gasto));
    }
    break;
    case 3:
    for(i = 0; i<c; i++)
    {
    Re[i].saldo();
    JOptionPane.showMessageDialog(null,"la cantidad presupuestada es: " + Re[i].saldo());
    }

    break;
    case 4:
    System.out.println(" CONCEPTO GASTO\n ");
    System.out.println(" clave: Concepto: Saldo: C.Gastada: C.Presupuestada:");

    for(i = 0; i<c; i++)
    {
    Re[i].imprimir();

    }
    break;
    case 5: JOptionPane.showMessageDialog(null,"Fin");
    break;

    }

    }while(opcion!=5);
    }

    }

    te lo agradeceria mucho amigo!

  10. Avatar for belial9826 elkin martinez dice:

    excelente el tutorial me ayudo mucho pero tengo una duda…. si yo quisiera ingresar otro dato como por ejemplo un numero de identificacion ¿como haria para validar que ese dato no haya sido ingresado antes? y pues si existe que no se cree el objeto o crearlo si no existe

  11. Avatar for belial9826 Peluccio dice:

    ¡Buen aporte!

  12. Avatar for belial9826 David Betancourt dice:

    Hola espero estés bien, mira estoy realizando un pequeño programa con arreglos, los datos del mismo son ingresados por teclado con un ciclo for, pero tengo un problema, no he encontrado la manera de que al estar ingresando los datos y si en alguno no ingreso nada y doy aceptar me aparece un error de compilación. lo siguiente es parte del código que estoy utilizando, espero puedas sugerirme alguna solución, saludos:

    cant=Integer.parseInt(this.txtCantidad.getText());
    int arreglo[]=new int[cant];
    for(int i=0;i<arreglo.length;i++){

    arreglo[i]=Integer.parseInt(JOptionPane.showInputDialog(null, "ingresa el valor " + (i+1) + " del arreglo"));
    while(!isNumber(null)){
    arreglo[i]=Integer.parseInt(JOptionPane.showInputDialog(null, "dato invalido, ingrese un dato correcto"));
    }

    y este es el método que utilizo pero no me sirve :

    private static boolean isNumber(String n){
    try{
    Integer.parseInt(n);
    return true;
    }catch(NumberFormatException nfe){
    return false;
    }
    }

  13. Avatar for belial9826 Jose Licea dice:

    Disculpa en tu método mostrar() guardas todos los datos en una cadena pero nunca la muestras, o al menos no lo veo estoy en lo cierto? O en que parte lo muestras?

    1. Avatar for belial9826 Jose Licea dice:

      Mi error por un momento vi un if en vez de un for… Mea culpa :v
      Excelente tutorial me has salvado de un parcial!! 😀

  14. Avatar for belial9826 Diego Salazar dice:

    Excelente tutorial.

    Tengo una consulta y espero puedas ayudarme. Para modificar, en este caso “n” como haría?

    Saludos

  15. Avatar for belial9826 Miguel dice:

    Tengo una pregunta, se puede hacer un arreglo de una clase abstracta?

    1. Avatar for belial9826 belial9826 dice:

      Hola miguel, claro que si 😀 Espero tener algo de tiempo para seguir con lo de java. Aunque la idea es mostrar otras cosas interesantes, como Laravel 5.

  16. Avatar for belial9826 MetalheadB93 dice:

    excelente we
    lo que has posteado me ha servido en grande,
    he logrado adaptarlo a mi proyecto y del más malo, he pasado al mejor proyecto de la clase XD jajajajajaj

    analizar, deducir, adaptar, implementar y mejorar XD
    es básicamente lo que he hecho.

    1. Avatar for belial9826 belial9826 dice:

      Que bueno que te haya servido! Esa es la idea, que puedan tomar el código y mejorarlo. Saludos 🙂

  17. Avatar for belial9826 santiago dice:

    Buenas como esta disculpa una pregunta, en tu primer programa de userbanc justo en el menú a la ejecución supongamos que el usuario te ingreso por equivocación una letra como evitas eso porque en tu programa ingresas como opción una letra y sale un error

    Muchas gracias

    1. Avatar for belial9826 belial9826 dice:

      Hola amigo, para esto es necesario un pequeño método para saber si lo que se ingresa es numero o no. El método es el siguiente:

      public boolean validar(String texto) {
              try {
                  int b = Integer.parseInt(texto);
                  return true;//si se puede convertir a numero devuelve verdadero
              } catch (NumberFormatException e) {
                  return false;//si no se puede convertir a numero devuelve falso
              }
          }
      

      Luego, justo en la linea 22 tendrás que añadir el llamado a este método, pasando como parámetro el valor que se ingrese, debería quedar justo de la siguiente manera:

      if (ax != null && !ax.equals("") && validar(ax)) {

      Y listo! Con esto, cada vez que se ingrese un texto, se volverá a mostrar el menú, si deseas tener un mensaje personalizado con respecto al texto, la invocación del método tendrás que hacerlo en otra condicional, y así mostrar el mensaje que desees. Saludos 🙂

  18. Avatar for belial9826 Ivan Gramajo dice:

    Hola, tengo que hacer algo parecido a lo de arriba, pero cuando integro lo que quiero siempre me tira error.
    Este es mi código:
    package funciones;

    import java.math.BigInteger;
    import java.util.Scanner;

    import javax.swing.JOptionPane;

    public class menuinternet {
    int j;
    int contUser=0, cod=1; //variable llevar control usuarios ingresados
    userBanc usuario [] = new userBanc[5]; //creando el arreglo de objetos (clase userBanc)

    public menuinternet(){ //constructor de la clase ArrObj

    String ax;
    int op=0;

    do{
    ax = JOptionPane.showInputDialog(null, “1. fs”
    +”2. Cubo”
    +”3. fact”
    +”4. Math”
    +”5. Phisics”
    +”6. Salida”);
    if(ax!=null && !ax.equals(“”)){
    op = Integer.parseInt(ax);

    switch(op){
    case 1:
    fs();
    break;
    case 2:
    Cubo();
    break;
    case 3:
    fact();
    break;
    case 4:
    Math();
    break;
    case 5:
    Phisics();
    break;
    case 6:
    break;
    default:
    JOptionPane.showMessageDialog(null, “No es una opción valida!!!”);
    }
    }

    }while(op!=5);
    }

    private void fs() {
    // TODO Auto-generated method stub
    float a; float b; float resu;
    System.out.println(“Ingrese Un valor Decimal”);
    a = System.in.read();
    System.out.println(“Ingrese Un valor Decimal Dos”);
    b = System.in.read();
    resu = fs (a,b);
    System.out.println(resu);
    System.out.println(“Ingrese Un valor Decimal Tres”);
    int c = System.in.read();
    System.out.println(cubo(c));
    j = fact(c);
    System.out.println(j);
    }

    private float Cubo() {
    // TODO Auto-generated method stub
    float fs; float n1; float n2;{
    float suma = n1 + n2;
    return suma;
    }

    }

    private int fact() {
    // TODO Auto-generated method stub
    int cubo; int n1;{
    int cub = n1 * n1 * n1;
    return cub;
    }
    }

    private void Math() {
    // TODO Auto-generated method stub
    Scanner c;
    c = new Scanner(System.in);
    System.out.println(“LONGITUD DE UN CIRCULO”);
    System.out.println(“Cuál es el Radio de la Circunferencia”);
    int radio = c.nextInt();
    if (radio > 0){

    System.out.println(“FÓRMULA”);
    System.out.println(“LONGITUD = 2 * RADIO * π”);
    System.out.println(“La Longitud es:”);
    System.out.println(Math.PI * radio * 2);
    }
    }
    private void Phisics() {
    // TODO Auto-generated method stub
    Scanner c;
    c = new Scanner(System.in);
    int aceleracion;
    int vi;
    int vf;
    int t;
    int a;
    System.out.println(“ACELERACIÓN”);
    System.out.println(“Velocidad Inicial”);
    vi = c.nextInt();
    System.out.println(“Velocidad Final”);
    vf = c.nextInt();
    System.out.println(“Tiempo”);
    t = c.nextInt();

    aceleracion = (vf – vi);
    a = (aceleracion / t);
    System.out.println(“FÓRMULA”);
    System.out.println(“ACELERACIÓN = Velocidad Final – Velocidad Inical / Tiempo”);
    System.out.println(“La Aceleracion es:”);
    System.out.println(a);
    }

    public static void main(String[] args) {

    menuinternet w = new menuinternet(); //creacion del objeto w, llamado al constructor de la clase ArrObj
    System.exit(0);
    }
    }

    1. Avatar for belial9826 belial9826 dice:

      Hola disculpa la demora 😀 Pero por cuestiones personales he tenido bastante abandonado el blog. Ahora bien, he encontrado ciertas cosas, como en el menu, usa saltos de linea para hacer un menu mas chevere, te solucione el ciclo del menu 😉 El siguiente codigo es lo que pude mirar:

      package menuinternet;
      
      import java.io.IOException;
      import java.util.Scanner;
      import java.util.logging.Level;
      import java.util.logging.Logger;
      
      import javax.swing.JOptionPane;
      
      public class menuinternet {
      
          int j;
          int contUser = 0, cod = 1; //variable llevar control usuarios ingresados
          //userBanc usuario [] = new userBanc[5]; //creando el arreglo de objetos (clase userBanc)
      
          public menuinternet() { //constructor de la clase ArrObj
      
              String ax;
              int op = 0;
      
              do {
                  ax = JOptionPane.showInputDialog(null, "1. fsn"
                          + "2. Cubon"
                          + "3. factn"
                          + "4. Mathn"
                          + "5. Phisicsn"
                          + "6. Salida");
                  if (ax != null && !ax.equals("")) {
                      op = Integer.parseInt(ax);
      
                      switch (op) {
                          case 1:
                              fs();
                              break;
                          case 2:
                              Cubo();
                              break;
                          case 3:
                              fact();
                              break;
                          case 4:
                              Math();
                              break;
                          case 5:
                              Phisics();
                              break;
                          case 6:
                              System.exit(0);
                              break;
                          default:
                              JOptionPane.showMessageDialog(null, "No es una opción valida!!!");
                      }
                  }
      
              } while (op != 6 && ax != null);
          }
      
          private void fs() {
              try {
                  // TODO Auto-generated method stub
                  float a;
                  float b;
                  float resu;
                  //System.out.println("Ingrese Un valor Decimal");
                  a = Float.parseFloat(JOptionPane.showInputDialog(null, "Ingrese Un valor Decimal"));
                  //a = System.in.read();
                  b = Float.parseFloat(JOptionPane.showInputDialog(null, "Ingrese Un valor Decimal"));
                  //System.out.println("Ingrese Un valor Decimal Dos");
                  //b = System.in.read();
                  //**************** OJO *****************************
                  
                  resu = fs(a,b);//Esta linea recibe dos parametros en una funcion, la funcion no recibe ningun parametro
                  
                  //**************************************************
                  
                  //System.out.println(resu);
                  System.out.println("Ingrese Un valor Decimal Tres");
                  int c = System.in.read();
                      //System.out.println(cubo(c));
                  //j = fact(c);
                  System.out.println(j);
              } catch (IOException ex) {
                  Logger.getLogger(menuinternet.class.getName()).log(Level.SEVERE, null, ex);
              }
          }
      
          private float Cubo() {
              // TODO Auto-generated method stub
              float fs = 0, n1 = 0, n2 = 0;
              {
                  float suma = n1 + n2;
                  return suma;
              }
      
          }
      
          private int fact() {
              // TODO Auto-generated method stub
              int cubo, n1 = 0;
              {
                  int cub = n1 * n1 * n1;
                  return cub;
              }
          }
      
          private void Math() {
              // TODO Auto-generated method stub
              Scanner c;
              c = new Scanner(System.in);
              System.out.println("LONGITUD DE UN CIRCULO");
              System.out.println("Cuál es el Radio de la Circunferencia");
              int radio = c.nextInt();
              if (radio > 0) {
      
                  System.out.println("FÓRMULA");
                  System.out.println("LONGITUD = 2 * RADIO * π");
                  System.out.println("La Longitud es:");
                  System.out.println(Math.PI * radio * 2);
              }
          }
      
          private void Phisics() {
              // TODO Auto-generated method stub
              Scanner c;
              c = new Scanner(System.in);
              int aceleracion;
              int vi;
              int vf;
              int t;
              int a;
              System.out.println("ACELERACIÓN");
              System.out.println("Velocidad Inicial");
              vi = c.nextInt();
              System.out.println("Velocidad Final");
              vf = c.nextInt();
              System.out.println("Tiempo");
              t = c.nextInt();
      
              aceleracion = (vf - vi);
              a = (aceleracion / t);
              System.out.println("FÓRMULA");
              System.out.println("ACELERACIÓN = Velocidad Final - Velocidad Inical / Tiempo");
              System.out.println("La Aceleracion es:");
              System.out.println(a);
          }
      
          public static void main(String[] args) {
      
              menuinternet w = new menuinternet(); //creacion del objeto w, llamado al constructor de la clase ArrObj
              System.exit(0);
          }
      }
      

      Mira la linea 72, la cual tiene el problema. Saludos.

  19. Avatar for belial9826 luis fernanddo dice:

    Hola amigo gran sitio, mi pregunta es que tengo un vector de objetos y lo ordeno con metodo de burbuja pero al ordenalo alfabeticamente lo ordena solo los nombres el resto queda igual no cambia como haria para corregirlo

    void ordenar(){
    for(int k=0;k<2;k++) {
    for(int f=0;f0) {
    String aux;
    aux=datos[f].getNombre();
    datos[f].setNombre(datos[f+1].getNombre());
    datos[f+1].setNombre(aux);
    }
    }
    }
    }

    1. Avatar for belial9826 belial9826 dice:

      Hola luis 🙂 Primero dejame disculpar por la demora en contestarte. Segun lo que veo es que estas ordenando directamente. Para hacer lo que quieres tienes que manejar una condicional y un arreglo temporal para manejar los datos a ordenar. Este ejercicio lo tengo en el articulo sobre como modificar el tamaño de un arreglo, exactamente en la funcion public void arreDin. Espero analises el codigo y saques lo que necesitas 😉

  20. Avatar for belial9826 luizander dice:

    hay un falla en el codigo en el menu de opciones
    do{
    en le case 5:
    si le pusieras System.exit(0);
    break;
    y luego el default: estaria mejor
    }while(op!=5);

    ya que si lo dejas como esta al selecionar las opcion 5 de salir
    esta bien sale de la aplicacion pero muestra el mensaje del default

    1. Avatar for belial9826 belial9826 dice:

      Hola luizander, he corregido lo que propones, pero no es una falla como tu dices, si te fijas en el método Main, esta la instrucción para salir de la aplicación 😉 Lo del mensaje de default no lo quise añadir, ya que el programa funciona para lo que es el ejemplo, gracias por tu aporte 🙂 Saludos !

  21. Avatar for belial9826 Carolina dice:

    Buenos dìas, tengo una duda.. mi idea es poder realizar un objeto de tipo vector que al ingresar en ese objeto indique la posicion que va colocando el bucle, pero que igualmente tome en cuenta el metodo que estoy llamando:
    Este es mi caso:

    case “a”:

    System.out.println(“Cuantas casas desea ingresar:”);
    InputStreamReader l = new InputStreamReader(System.in);
    BufferedReader o = new BufferedReader(l);
    n = Integer.parseInt(o.readLine());
    obj [] p2 = new obj[n];
    int f = p2.lenght;
    for(int i=0; i<f;i++){
    p2[i].pedirdatos();
    }

    Dice que tiene un error: que da un valor nulo y no entiendo el porque… Y no quiere ingresar al metodo de pedir datos. Agradecerìa tu respuesta.

    1. Avatar for belial9826 belial9826 dice:

      Hola Carolina, cuando ingreses datos en una posición tienes que usar el operador de asignación = ; en tu caso seria p2[i] = pedirdatos(); ten en cuenta que los datos que recibas tienen que contener los mismos datos que tiene tu objeto, en otras palabras, si tu objeto contiene un entero, un string, son estos valores que debes de pedir. Como valor agregado, te recomiendo que quites ese entero f y pongas directamente en el for el p2.lenght.

      1. Avatar for belial9826 Carolina dice:

        Muchas gracias, era p2[i]= new obj(); que me faltaba. Sabes que como es vector yo necesito que ingrese, varias veces diferentes datos. En este caso lo hace, pero sucede que pido cuantas casas desea ingresar ejemplo: ingreso 2. Ingreso el nombre el apellido la direccion dos veces pero esos datos los copio de un .txt y los pego a la consola, apena termino se queda esperando datos empiezo a teclear enter como corriendo espacios y termina. Pero me di cuenta que al momento de imprimir solo me imprime el primer lote, es decir el primer nombre apellido direccion y el segundo lote no lo guarda mucho menos lo imprime no entiendo porque…..

  22. Avatar for belial9826 Marcela dice:

    Buenas noches, gracias por la colaboración en la pregunta anterior, pero tengo otro problema en el siguiente ejercicio:

    Tengo estas dos clases:
    package testmicoleccion;

    import java.util.*;
    public class TestMiColeccion {

    public static void main(String arg[]){
    System.out.println(“Mi Coleccion 1”);
    MiColeccion mc1=new MiColeccion();
    mc1.insertarAlFinal(1);
    mc1.insertarAlFinal(2);
    mc1.insertarAlFinal(3);
    mc1.insertarAlPrincipio(4);
    mc1.mostrarContenido();

    ArrayList al= new ArrayList();

    al.add(9);
    al.add(10);
    al.add(11);

    mc1.agregarAlFinal(al);
    mc1.mostrarContenido();
    mc1.eliminar(0);
    mc1.eliminar(5);
    mc1.mostrarContenido();
    mc1.setValor(0,0);
    mc1.setValor(6,0);
    mc1.mostrarContenido();

    System.out.println(“En la posicion 4 esta el “+mc1.getValor(4));

    System.out.println(“La sumatoria de sus elementos es:”+mc1.getSumatoria());
    System.out.println(“El promedio de sus elementos es:”+mc1.getPromedio());
    System.out.println(“En la coleccion hay “+mc1.cuentaElementos()+” elementos”);
    System.out.println(“Y hay “+mc1.cuentaCeros()+ ” ceros”);
    System.out.println(“La sumatoria de los pares es: “+mc1.sumaPares());
    System.out.println(“El numero 2 esta “+mc1.cuentaRepeticiones(2)+ ” veces”);
    mc1.reemplazarValor(0,9);
    mc1.mostrarContenido();
    mc1.reemplazarTodo(al);
    mc1.mostrarContenido();
    System.out.println(mc1.invertir());
    System.out.println(“El mayor elemento es: “+mc1.getMayor());
    System.out.println(“El menor elemento es: “+mc1.getMenor());
    mc1.insertarAlFinal(1);
    mc1.insertarAlFinal(2);
    mc1.insertarAlFinal(3);
    mc1.mostrarContenido();
    System.out.println(mc1.getPrimeros(2));
    System.out.println(mc1.getUltimos(2));
    mc1.mostrarContenido();
    System.out.println(“Palindrome=”+mc1.esPalindrome());
    System.out.println(“Esta el 3 en la lista? “+mc1.buscar(3));
    }

    }

    y…

    package testmicoleccion;

    import java.util.*;
    public class MiColeccion {

    int Valor, valor, posicion, sumatoria, cuentaelementos, cuentaceros, sumapares, antiguoValor, nuevoValor, mayor, menor, numero;
    List al;
    double promedio;
    ArrayList invertir;
    boolean espalindrome, buscar;
    int eliminar;

    public MiColeccion () {

    }
    void insertarAlFinal(int valor) {
    this.valor=valor;
    sumatoria +=valor;
    }

    void insertarAlPrincipio(int valor) {
    this.valor=valor;
    sumatoria +=valor;
    }

    void agregarAlFinal(ArrayList al) {
    this.al=al;
    int i;
    int sum = 0;
    for (i=0; i< al.size(); i++)
    {
    int num= (int) al.get(i);
    sum += num;
    }
    sumatoria +=sum;
    }

    void eliminar(int posicion ) {
    this.posicion=posicion;
    }

    void setValor (int posicion, int valor) {

    }

    int getValor (int posicion) {
    return posicion;
    }

    int getSumatoria() {
    return sumatoria;
    }

    double getPromedio() {
    return promedio;
    }

    int cuentaElementos() {
    return cuentaelementos;
    }

    int cuentaCeros() {
    return cuentaceros;
    }

    int sumaPares() {
    return sumapares;
    }

    int cuentaRepeticiones(int numero) {
    return numero;
    }

    void reemplazarValor(int antiguoValor, int nuevoValor) {
    this.antiguoValor=antiguoValor;
    this.nuevoValor=nuevoValor;
    }

    void reemplazarTodo(List al) {
    this.al=al;
    }

    ArrayList invertir() {
    return invertir;
    }

    int getMayor() {
    return mayor;
    }

    int getMenor() {
    return menor;
    }

    int getPrimeros(int cantidad) {
    return cantidad;
    }

    int getUltimos(int cantidad) {
    return cantidad;
    }

    boolean esPalindrome() {
    return espalindrome;
    }

    boolean buscar(int numero) {
    return buscar;
    }

    void mostrarContenido() {

    }

    Mi pregunta es como hago para que cuando diga por ejemplo void eliminar (int posición) me tome el valor que esta representando la posición y no el número de la posición….
    Muchas gracias por tu ayuda…..

    1. Avatar for belial9826 belial9826 dice:

      Hola Marcela, cuando haces esto: MiColeccion mc1=new MiColeccion(); creas un objeto y manipulas sus atributos, en ningún momento eso tiene que ver con un arrayList 😛 Ahora, esto si es un arrayList: ArrayList al= new ArrayList(); pero solo estas añadiendo elementos, mas no usando como debería de ser, para eliminar un elemento en determinada posición lo haces por un bucle, luego comparas haciendo lo siguiente:

      for(int i=0; i
      

      Ademas, los arryList son arreglos dinámicos, osea, si se elimina un elemento la posición de los demás se afectaran. Gracias a tu pregunta estoy preparando la explicación de este concepto, pronto publicare unos cuantos ejemplos 😉

      1. Avatar for belial9826 Marcela dice:

        Muchísimas gracias por tu colaboración, y en verdad deberías publicar los ejemplos.
        Gracias.

  23. Avatar for belial9826 Marcela dice:

    Buenas noches, muchísimas gracias por publicar este ejercicio. Pero quisiera preguntarte en el lugar donde tu programas para buscar un código, como seria si lo que necesito buscar es un nombre y cuando lo encuentre me publique todos los apellidos con dicho nombre. Te agradecería muchísimo tu ayuda.

    1. Avatar for belial9826 belial9826 dice:

      Hola Marcela, para tal cuestión te recomiendo usar un arreglo bidimensional, imagina 3 columnas donde se tenga el nombre, el primer apellido y segundo apellido, cuando encuentre el nombre en la columna 1, se muestre la informacion de las columnas 2 y 3. Para mas claridad revisa lo que son los arreglos bidimensionales. Éxitos !

  24. Avatar for belial9826 fernando dice:

    buen trabajo men, pero en tu trabajo si se ingresan mas de 5 objetos no veo q redefinas el tamaño del vector de objetos ( q es lo que quiero aprender ) tambien quisiera save si es posible definir el tamaño del vector por entrada de teclado porque hay es donde caben mis mayores dudas

    1. Avatar for belial9826 belial9826 dice:

      Hola fernando, gracias por tu comentario 😀 En un anterior ejemplo con arreglos realice un ejercicio donde se modifica o re define el tamaño del arreglo, como también se ingresa el tamaño del arreglo a usar, el ejercicio trataba sobre Modificar el Tamaño de un Arreglo, espero te sirva. Saludos 🙂

  25. Avatar for belial9826 Carlos dice:

    Como sería para ordenarlos sin usar SORT comparator etc es mi duda se puede?

  26. Avatar for belial9826 Raly dice:

    Hola:

    Excelente ejemplo, pero tengo una duda sobre cómo se debe estructurar un programa con POO.

    No deberian estás los metodos del objeto (agregar, eliminiar, buscar, etc) dentro de la calse del objeto? es decir, donde están los metodos set/get.

    Gracias!

    1. Avatar for belial9826 belial9826 dice:

      Hola, gracias por tu comentario 😀 La POO es bastante flexible, si tu quieres poner tales métodos en dicha clase bien puedes hacerlo, el resultado sera el mismo 🙂 En cuanto a la estructura tienes la razón, pero trato de seguir un hilo, mas adelante daré guías de lo que tu hablas 🙂

  27. porfavor ayudeenme con este ejercicio

    Mis saludos implementar un programa que permita calcular el área, longitud y diámetro. Almacenarlo en un arreglo de objetos. Implementar la búsqueda de datos en el arreglo de objetos.

  28. Avatar for belial9826 linkill dice:

    O muy buen ejemplo.
    gracias por compartir .

  29. Avatar for belial9826 alvaro dice:

    uy no te pasaste de capo
    vengo de mas de 10 sitios web viendo esto de objetos
    y tu les ganas de lejos
    y una pregunta
    es aconsejable crear una clase dentro de otra????

    1. Avatar for belial9826 belial9826 dice:

      Este tipo de anidamiento tiene sus ventajas una de estas es la siguiente:

      – La clase anidada (clase interna) puede acceder a todos los atributos y métodos de la clase contenedora (incluso los privados) pero la clase contenedora no.

      Si quieres una explicación mas completa la encontraras aquí.

      Saludos 😉

      1. Avatar for belial9826 moises durante dice:

        buenos dias amigo mucho gusto moises durante, soy de colombia , por fafor necesito ayuda, me mandaron hacer un vector en java o c++ , con los metodo de ORDENAMIENTO DE BURBUJA , ORDENAMIENTO SHELL ,ORDENAMIENTO POR INSERCION ORDENAMIENTO POR SELECCION

Deja un comentario