Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - @dib_vz

Páginas: [1]
1
Mi duda es la siguiente.

Tengo un fichero xml valido para un schema que tengo en una aplicacion java.

La idea es abril ese fichero xml, que contiene datos concretos, añadir un nuevo elemento, en este caso un alumno nuevo, y volver a guardarlo.

caputara del archivo xml
Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>

<Curso xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="clase.xsd">
  <profesor>
    <nombre>Juan Fernandez</nombre>
    <asignatura>Java</asignatura>
    <especialidad>Programacion</especialidad>
    <curso>2014/2015</curso>
    <modalidad>eLearnig</modalidad>
  </profesor>
  <comentario>Sin comentario</comentario>
  <alumnos>
    <alumno>
      <nombreAlumno>Frank de la jungla</nombreAlumno>
      <edad>40</edad>
      <direccion>Thailandia</direccion>
      <comentario>Intrepido aventurero</comentario>
      <telefono>556999111</telefono>
    </alumno>
    <alumno>
      <nombreAlumno>Mariano Rajoy</nombreAlumno>
      <edad>65</edad>
      <direccion>Palacio de la Moncloa</direccion>
      <comentario>Sin comentarios!!</comentario>
      <telefono>651325896</telefono>
    </alumno>
    <alumno>
      <nombreAlumno>Stepehen Hawkins</nombreAlumno>
      <edad>79</edad>
      <direccion>Cambrige</direccion>
      <comentario>The boss</comentario>
      <telefono>856321569</telefono>
    </alumno>
  </alumnos>
</curso>
captura del programa
Código: [Seleccionar]
public class JABX_clase {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)  {
        // TODO code application logic here
        try {
           
            //Creamos una instancia de la clase JABXContext para manipular las
            //clases que contiene, extraidas del schema curso.xsd
            JAXBContext jaxbContext = JAXBContext.newInstance("generated");
           
            //Objeto de tipo unmarshall para convertir los tipo xml en objetos java
            Unmarshaller u = jaxbContext.createUnmarshaller();
           
            //JAXBElement para obtener elementos del documento xml
            JAXBElement jaxbElement = (JAXBElement) u.unmarshal(
                    new FileInputStream("/home/dib_vz/claseA.xml"));
           
            //metodo para obtener el modelo de contenido y el valor de los atributos
            CursoType cursoType = (CursoType) jaxbElement.getValue();
           
            // Aqui es donde no se como seguir, para añadir nuevos elementos de tipo
            // alumno

            //
            Marshaller m = jaxbContext.createMarshaller();
            //
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            //
            m.marshal(jaxbElement, System.out);
           
        } catch (JAXBException je) {
            System.out.println(je.getCause());
        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        }
       
    }
   
}
captura de la clase Alumnos
Código: [Seleccionar]
public class Alumnos {

    @XmlElement(required = true)
    protected List<Alumnos.Alumno> alumno;

    /**
     * Gets the value of the alumno property.
     *
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the alumno property.
     *
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAlumno().add(newItem);
     * </pre>
     *
     *
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Alumnos.Alumno }
     *
     *
     * @return
     */
    public List<Alumnos.Alumno> getAlumno() {
        if (alumno == null) {
            alumno = new ArrayList<>();
        }
        return this.alumno;
    }

    public void setNombreAlumno(String hola) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public void setEdad(String string) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }


    /**
     * <p>Clase Java para anonymous complex type.
     *
     * <p>El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase.
     *
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="nombreAlumno" type="{http://www.w3.org/2001/XMLSchema}string"/>
     *         &lt;element name="edad">
     *           &lt;simpleType>
     *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}positiveInteger">
     *               &lt;maxExclusive value="100"/>
     *             &lt;/restriction>
     *           &lt;/simpleType>
     *         &lt;/element>
     *         &lt;element name="direccion" type="{http://www.w3.org/2001/XMLSchema}string"/>
     *         &lt;element ref="{}comentario" minOccurs="0"/>
     *         &lt;element name="telefono" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     *
     *
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "nombreAlumno",
        "edad",
        "direccion",
        "comentario",
        "telefono"
    })
    public static class Alumno {

        @XmlElement(required = true)
        protected String nombreAlumno;
        protected int edad;
        @XmlElement(required = true)
        protected String direccion;
        protected String comentario;
        @XmlElement(required = true)
        @XmlSchemaType(name = "positiveInteger")
        protected BigInteger telefono;

        /**
         * Obtiene el valor de la propiedad nombreAlumno.
         *
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getNombreAlumno() {
            return nombreAlumno;
        }

        /**
         * Define el valor de la propiedad nombreAlumno.
         *
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setNombreAlumno(String value) {
            this.nombreAlumno = value;
        }

        /**
         * Obtiene el valor de la propiedad edad.
         *
         * @return
         */
        public int getEdad() {
            return edad;
        }

        /**
         * Define el valor de la propiedad edad.
         *
         * @param value
         */
        public void setEdad(int value) {
            this.edad = value;
        }

        /**
         * Obtiene el valor de la propiedad direccion.
         *
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getDireccion() {
            return direccion;
        }

        /**
         * Define el valor de la propiedad direccion.
         *
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setDireccion(String value) {
            this.direccion = value;
        }

        /**
         * Obtiene el valor de la propiedad comentario.
         *
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getComentario() {
            return comentario;
        }

        /**
         * Define el valor de la propiedad comentario.
         *
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setComentario(String value) {
            this.comentario = value;
        }

        /**
         * Obtiene el valor de la propiedad telefono.
         *
         * @return
         *     possible object is
         *     {@link BigInteger }
         *     
         */
        public BigInteger getTelefono() {
            return telefono;
        }

        /**
         * Define el valor de la propiedad telefono.
         *
         * @param value
         *     allowed object is
         *     {@link BigInteger }
         *     
         */
        public void setTelefono(BigInteger value) {
            this.telefono = value;
        }

    }

2
Alguien puede echarme una mano con este ejercicio? No entiendo muy bien como sacar por pantalla una lista de una clase propia que he creado y que tiene varios parametros.

Gracias

Crea una clase denominada ListaCantantesFamosos que disponga de un atributo ArrayList listaCantantesFamosos que contenga objetos de tipo CantanteFamoso. La clase debe tener un método que permita añadir objetos de tipo CantanteFamoso a la lista. Un objeto de tipo CantanteFamoso tendrá como atributos nombre (String) y discoConMasVentas (String), y los métodos para obtener y establecer los atributos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y añade manualmente dos objetos de tipo CantanteFamoso a la la lista. Usando iterator muestra los nombres de cada cantante y su disco con más ventas por pantalla. Se debe pedir al usuario un nombre y disco con más ventas de otro cantante famoso, y una vez introducidos los datos mostrar la lista actualizada usando iterator. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir los datos de otro cantante o salir del programa (se podrán introducir tantos datos de cantantes como se desee. Para ello usa un bucle while que dé opción a elegir al usuario). Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.

Ejemplo de lo que podría ser la ejecución del programa:

La lista inicial contiene los siguientes datos:
Cantante: Madonna.    Disco con más ventas: All I want is you.
Cantante: Jorge Negrete    Disco con más ventas: Jalisco.

Por favor introduzca los datos de otro cantante.
Nombre: Michael Jackson
Disco con más ventas: Thriller
La lista actualizada contiene los siguientes datos:
Cantante: Madonna.    Disco con más ventas: All I want is you.
Cantante: Jorge Negrete    Disco con más ventas: Jalisco.
Cantante: Michael Jackson    Disco con más ventas: Thriller.
¿Desea introducir los datos de otro cantante (s/n)?
s
Por favor introduzca los datos de otro cantante.
Nombre: Luis Miguel
Disco con más ventas: Mi jardín oculto
La lista actualizada contiene los siguientes datos:
Cantante: Madonna.    Disco con más ventas: All I want is you.
Cantante: Jorge Negrete    Disco con más ventas: Jalisco.
Cantante: Michael Jackson    Disco con más ventas: Thriller.
Cantante: Luis Miguel        Disco con más ventas: Mi jardín oculto.
¿Desea introducir los datos de otro cantante (s/n)?
n

3
Aqui os dejo un nuevo ejercicio del curso de java. He intentado ir siguiendo los consejos y recomendaciones que a lo largo del curso me habeis ido comentando en los ejercicios.

He creado una clase ListaCantantesFamosos para crear objetos ArrayList

Código: [Seleccionar]
import java.util.ArrayList;

public class ListaCantantesFamosos {
   
    private String nombreListaCantantes;
    private ArrayList<String> listaCantantes;
   
    //constructor
    public ListaCantantesFamosos () {
       
        nombreListaCantantes = "CANTANTES FAMOSOS";
        listaCantantes = new ArrayList<String>();
        listaCantantes.add("Paulina Rubio");
        listaCantantes.add("Shakira");
        listaCantantes.add("Beyonce");
    }
   
    public void añadirNombre (String nombreCantante) {
       
        listaCantantes.add(nombreCantante);
    }
   
    public ArrayList<String> getListaCantantes() {
       
        return listaCantantes;
    }
   
    public int getTamaño() {
       
        return listaCantantes.size();
    }
   
    public String getNombreLista() {
       
        return nombreListaCantantes;
    }
   
    //Con este metodo se imprime la lista en pantalla en formato columna
    public void imprimirLista () {
       
        System.out.println("\n" + getNombreLista() + "\n");
        for (int i=0; i<getTamaño(); i++) {
            System.out.println((i+1) + " --- " + getListaCantantes().get(i));
        }
    }
}

Posteiormente he creado la clase con el metodo main para inicializar el programa y todos los procesos que piden en el ejercicio.

Código: [Seleccionar]
public class TestCantantes {
   
    public static void main (String[] args) {
       
        System.out.println("Esta es una lista de cantantes famosos");
 
        ListaCantantesFamosos lista = new ListaCantantesFamosos();
       
        lista.imprimirLista();
       
        boolean lanzador = true;
        while (lanzador==true) {
            System.out.println("\n¿Desea añadir un nuevo nombre a la lista?(y/n)");
            EntradaPalabras confirmador = new EntradaPalabras();
           
            if (confirmador.getPalabra().equalsIgnoreCase("y")) {
                System.out.println("\nPor favor, introduzca un nuevo cantante:");
                EntradaPalabras nombre = new EntradaPalabras();
                lista.añadirNombre(nombre.getPalabra());
            } else {
                lanzador = false;
                System.out.println("\nSu lista definitiva esta compuesta por " + (lista.getTamaño()) + " referencias de:");
                lista.imprimirLista();
                System.out.println("\nEspero que haya disfrutado del programa.\n\nDesarrollado por @dib_vz");
            }
        }
    }
}

Se hace referencia a otra clase EntradaPalabras, que es la que cree en otros ejercicios para utilizar la clase Scanner

Gracias por todo y un saludo!

4
He creado primero una clase para definir el objeto a analizar. En este caso es una palabra.

Código: [Seleccionar]
import java.util.Scanner;

public class ComparadorPalabras {

    private String palabra;

    //constructor
    public ComparadorPalabras() {

        palabra="";
        pedirPalabra();
        quitarEspacio();
    }

    //metodo para pedir una entrada de teclado
    public void pedirPalabra() {

        Scanner entradaEscaner = new Scanner(System.in);
        palabra = entradaEscaner.nextLine();
    }

    //este metodo analiza los primeros caracteres para elimnar los espacios antes de la palabra
    public void quitarEspacio() {

        for (int i=0; i<getLongitud(); i++) {

            if (palabra.substring(0,1).equals(" ")) {
                palabra=palabra.substring(1,getLongitud());
            }else {
                palabra=palabra;
            }
        }
    }

    public String getPalabra() {

        return palabra;
    }

    public int getLongitud() {

        return palabra.length();
    }
}

Despues me he creado otra clase main, donde llevo a cabo todos los procesos de comparacion

Código: [Seleccionar]
public class TestComparador {
   
    public static void main(String[] agrs) {
       
        System.out.println("COMPARADOR DE PALABRAS\n______________________\n" +
        "\nEste programa compara dos palabras introducidas por el usuario para su posterior análisis de caracteres\n");
                 
        boolean lanzador=false;
       
        //ciclo para reinicar o finalizar el programa
        while (lanzador==false) {
       
        System.out.println("\nPor favor, introduzca la primera palabra:");
        ComparadorPalabras palabra1=new ComparadorPalabras();
       
        System.out.println("\nPor favor, introduzca la segunda palabra:");
       
        ComparadorPalabras palabra2 = new ComparadorPalabras();
       
        System.out.println("\n¡Gracias por su colaboración!\n" +
        "\n------------------------------------" + "\n----- ESTE ES NUESTRO ANALISIS -----\n" +
        "------------------------------------");
       
        System.out.println("La primera palabra es: '" + palabra1.getPalabra() + "'\nTiene ---- " +
        palabra1.getLongitud() + " caracteres.\n \nLa segunda palabra es: '" + palabra2.getPalabra() + "'\nTiene ---- " +
        palabra2.getLongitud() + " caracteres.\n" + "\n----- Comparador de caracteres -----\n");

        //Funcion que compara los caracteres uno a uno
        if (palabra1.getLongitud() <= palabra2.getLongitud()) {
       
            //Ciclo que se repite en funcion de la longitud de la palabra
            for (int i=0; i<palabra1.getLongitud(); i++) {
               
                if (palabra1.getPalabra().substring(i,i+1).equalsIgnoreCase(palabra2.getPalabra().substring(i,i+1))) {
                    System.out.println("Caracter " + (i+1) + ": " + "La letra '" +
                    palabra1.getPalabra().substring(i,i+1) + "' coincide con la letra '" +
                    palabra2.getPalabra().substring(i,i+1) + "'");
                } else {
                    System.out.println("Caracter " + (i+1) + ": " + "La letra '" +
                    palabra1.getPalabra().substring(i,i+1) + "' no coincide con la letra '" +
                    palabra2.getPalabra().substring(i,i+1) + "'");
                }
            }
           
            //Condicion para saber si las palabras tienen igual o menos caracteres
            if (palabra1.getLongitud() < palabra2.getLongitud()) {
                System.out.println("\n'" + palabra1.getPalabra() + "'" +
                "no tiene más caracteres para comparar.\nFin del análisis.");
            } else {
                System.out.println("\nFin del análisis.");
            }
           
        } else {
                     
            for (int i=0; i<palabra2.getLongitud(); i++) {
               
                if (palabra1.getPalabra().substring(i,i+1).equalsIgnoreCase(palabra2.getPalabra().substring(i,i+1))) {
                    System.out.println("Caracter " + (i+1) + ": " + "La letra '" +
                    palabra1.getPalabra().substring(i,i+1) + "' coincide con la letra '" +
                    palabra2.getPalabra().substring(i,i+1) + "'");
                } else {
                    System.out.println("Caracter " + (i+1) + ": " + "La letra '" +
                    palabra1.getPalabra().substring(i,i+1) + "' no coincide con la letra '" +
                    palabra2.getPalabra().substring(i,i+1) + "'");
                }
            }
           
            System.out.println("\n'" + palabra2.getPalabra() + "'" +
            "no tiene más caracteres para comparar.\nFin del análisis.\n");
        }
       
        System.out.println("\n¿Desea analizar otra palabra(y/n)?");
        ComparadorPalabras palabra3 = new ComparadorPalabras();
       
        if (palabra3.getPalabra().equalsIgnoreCase("y")) {
            lanzador=false;
        } else {
            lanzador=true;
            System.out.println("\nEspero que haya disfrutado del programa.\n\nDesarrollado por @dib_vz");
        }
     }
   }
}

5
Aqui os dejo mi ejercicio. Funciona aunque supongo que se puede hacer mejor

Código: [Seleccionar]
import java.util.Scanner;

public class TestCadenaTexto {

    public static void main (String [] args) {

        System.out.print ("Inciando la aplicacion. \nPor favor, introduzca una cadena con su telcado para su análisis. \nEsperando...\n");

        String entradaTeclado = "";
        Scanner entradaEscaner = new Scanner (System.in);

        entradaTeclado = entradaEscaner.nextLine ();   

        String numeroLetras = "";

        if (entradaTeclado.length() < 5) {numeroLetras = "La cadena tiene menos de 5 caracteres";

        } else if (entradaTeclado.length() > 15) {numeroLetras = "La cadena tiene mas de 15 caracteres";

        } else {numeroLetras = "La cadena tiene entre 5 y 15 caracteres";

        }

        boolean letraA = false;

        if (entradaTeclado.substring (0,1).equalsIgnoreCase("a")) {

            letraA = true;
            System.out.println (numeroLetras + " y comienza por la letra a");

        } else {

            System.out.println (numeroLetras + " y no comienza por la letra a");
        }
    }
}

6
Aquí os dejo mi ejercicio del curso aprender a programar java desde cero, referente a la introducción de métodos para cálculos aritméticos.

Código: [Seleccionar]
/* Version 0.013 Medico

Novedades:

- incluido el método para calculo de operaciones aritméticas en función del valor de la edad

 */

public class Medico {
    private String nombre;
    private String apellido;
    private int edad;
    private boolean casado;
    private String dni;
    private String especialidad;
    private int multiploEdad;

    // constructor

    public Medico () {
        nombre = "tu nombre";
        apellido = "tu apellido";
        edad = 0;
        casado = false;
        dni = "00000000X";
        especialidad = "tu especialidad";
    }

    //     métodos de procedimiento

    public void setNombre (String valorNombre) {
        nombre = valorNombre;
        System.out.println("Se ha modificado el nombre del médico a: " + nombre);
    }

    public void setApellido (String valorApellido) {
        apellido = valorApellido;
        System.out.println("Se ha modificado el apellido del médico " + nombre + " a: " + apellido);
    }

    public void setEdad (int valorEdad) {
        edad = valorEdad;
        System.out.println("Se ha modificado la edad del médico " + nombre + " " + apellido + " a: " + edad + " años");
    }

    public void setCasado (boolean valorCasado) {
        casado = valorCasado;
        if (casado == false) {
            System.out.println("El estado civil del médico " + nombre + " " + apellido + " es soltero");
        }
        else {
            System.out.println("El estado civil del médico " + nombre + " " + apellido + " es casado");
        }
    }

    public void setDni (String valorDni) {
        dni = valorDni;
        System.out.println("Se ha modificado el DNI del médico " + nombre + " " + apellido + " a: " + dni);
    }

    public void setEspecialida (String valorEspecialidad) {
        especialidad = valorEspecialidad;
        System.out.println("Se ha modificado la especialidad del médico " + nombre + " " + apellido + " a: " + especialidad);
    }

    //     método para el calculo del múltiplo de 5

    public void setCalculoMultiploEdad () {
        int multiplo = edad%5;
        multiploEdad = 5 - multiplo;
        System.out.println("El médico " + nombre + " " + apellido + " de " + edad + " años, tendrá una edad múltiplo de 5 dentro de " + multiploEdad + " años");
    }

    // ----------------------------------------------------------------------------------------------------------------------

    // métodos funcion

    public String getNombre () {
        return nombre;
    }

    public String getApellido () {
        return apellido;
    }

    public int getEdad () {
        return edad;
    }

    public boolean getCasado () {
        return casado;
    }

    public String getDni () {
        return dni;
    }

    public String getEspecialidad() {
        return especialidad;
    }
}

El programa funciona, pero estoy abierto a vuestras recomendaciones

Un saludo

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".