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 - paramonso

Páginas: [1] 2 3 4 5 6 ... 8
1
Hola dejo el ejercicio CU00920C Interface List api java Clases ArrayList LinkedList Stack Vector.pdf) del tutorial de programación avanzada Java de aprenderaprogramar.com

Citar
EJERCICIO

Crea una clase denominada Cuadrupedo con los atributos idCuadrupedo (int) y tipo (String), donde tipo podrá tomar los valores León, Gato, Perro o Elefante.
Crea una clase con el método main donde se introduzcan 10000 cuadrúpedos en una lista de tipo estático List y tipo dinámico ArrayList. El atributo tipo debe establecerse para cada objeto de forma aleatoria. A continuación, el programa debe mostrar por consola los datos de los objetos con idCuadrupedo múltiplo de 1000 y mostrar un resumen de cuántos cuadrúpedos hay de cada tipo.

Ejemplo de ejecución:
Cuadrúpedo-> ID: 1000 Tipo: Leon
Cuadrúpedo-> ID: 2000 Tipo: Elefante
Cuadrúpedo-> ID: 3000 Tipo: Gato
Cuadrúpedo-> ID: 4000 Tipo: Gato
Cuadrúpedo-> ID: 5000 Tipo: Perro
Cuadrúpedo-> ID: 6000 Tipo: Perro
Cuadrúpedo-> ID: 7000 Tipo: Gato
Cuadrúpedo-> ID: 8000 Tipo: Gato
Cuadrúpedo-> ID: 9000 Tipo: Perro
Cuadrúpedo-> ID: 10000 Tipo: Leon
 Resumen: hay 2470 Leones, 2511 Gatos, 2575 Perros y 2444 Elefantes


Clase Cuadrupedo

Código: [Seleccionar]
public class Cuadrupedo{
    private int idCuadrupedo;
    private String tipo;
   
    public Cuadrupedo(int idCuadrupedo, String tipo) {
        this.idCuadrupedo = idCuadrupedo;
        this.tipo = tipo;
        }
 
    public int getIdCuadrupedo() { return idCuadrupedo; } //Omitimos otros métodos get y set para simplificar
    public String getTipo() { return tipo; }
   
    public void setIdCuadrupedo(int idCuadrupedo){
        this.idCuadrupedo=idCuadrupedo;
            }
    public void setTipo(String tipo){
    this.tipo=tipo;
    }   
   
    @Override
    public String toString() {
        return "ID -> Cuadrupedo: "+idCuadrupedo+" Nombre: "+tipo+"\n";
   }
}


Clase TestCuadrupedos

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

public class TestCuadrupedos {
    public static void main(String arg[]) {
        List<Cuadrupedo> lstCua= new ArrayList<Cuadrupedo>(); // El tipo es List y lo implementamos con ArrayList
        String[] tipoCua={"Leon","Gato","Perro","Elefante"};
        Random rnd = new Random();

        for(int i=1;i<=10000;i++)
        {
            lstCua.add(new Cuadrupedo(i,tipoCua[rnd.nextInt(4)]));
        }

        Iterator<Cuadrupedo> it = lstCua.iterator();
        int leones=0, gatos=0, perros=0, elefantes=0;
        String tipoCuadrupedo;
        Cuadrupedo temp = null;

        while(it.hasNext())
        {
            temp = it.next();
            tipoCuadrupedo=temp.getTipo();
            if(temp.getIdCuadrupedo()%1000==0){
                System.out.print(temp);
            }
            switch (tipoCuadrupedo) {
                case "Leon":
                leones++;
                break;
                case "Gato":
                gatos++;
                break;
                case "Perro":
                perros++;
                break;
                default:
                elefantes++;
                break;
            }
        }
 System.out.println("\nTotal Cuadrupedos por tipos\n "+
                    leones+" Leones\n "+
                    gatos+" Gatos\n "+
                    perros+" Perros\n "+
                    elefantes+" Elefantes\n===============");
  System.out.print((leones+gatos+perros+elefantes)+" <= Total Cuadrupedos");
    }
}


Adios. Un saludo ;)

2
Hola dejo el ejercicio de java Avanzado CU00919C Interface Iterator api java hasNext remove 

Clase Animal
Código: [Seleccionar]
/**
 * Write a description of class a here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Animal
{
    // instance variables - replace the example below with your own
     private String especie;
     private String nombre;
     private double peso;
     private int patas;
    //Constructores
   
   
    public Animal(String especie, String nombre,double peso, int patas)
    {
    this.especie=especie;
    this.nombre=nombre;
    this.peso=peso;
    this.patas=patas;
    }
   
    //metodos get y set
    public String getEspecie(){return especie;}
    public String getNombre(){return nombre;}
    public double getPeso(){return peso;}
    public int getPatas(){return patas;}
    @Override
    public String toString(){
     return "Animal ==>: especie "+especie+" Nombre: "+nombre+" Peso: "+peso+" Patas: "+patas+"\n";
    }
}//Fin de la clase

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

public class ListaDeAnimales {
    public ArrayList<Animal> listaAnimales = null;  // Campo de la clase
    public ListaDeAnimales() {listaAnimales= new ArrayList<Animal>();}  // Constructor de la clase
    public ArrayList<Animal> getListaDeAnimales(){return listaAnimales;} //Omitimos otros métodos
    public Iterator<Animal> iterator() {return new MiIteradorListaAnimales();} // Método de la clase

    @Override
    public String toString() {return listaAnimales.toString();}  // Método de la clase

    protected class MiIteradorListaAnimales implements Iterator<Animal>  // Clase interna
    {
        public int posicion = 0;    public boolean sepuedeeliminar = false;  // Campos
       
        @Override
        public boolean hasNext() {return posicion < listaAnimales.size();}  // Método
       
        @Override
        public Animal next() {  // Método
           Animal res = listaAnimales.get(posicion); // Creamos un objeto Animal igual al que recorremos
            posicion ++;
            sepuedeeliminar = true;
            return res;}
       
        @Override
        public void remove() {
            if (sepuedeeliminar) {
                listaAnimales.remove(posicion-1);
                posicion--;
                sepuedeeliminar = false; }
        } // Cierre del método remove
    } // Cierre de la clase interna
}  // Cierre de la clase

Clase Programa
Código: [Seleccionar]
import java.util.Iterator;
import java.util.Scanner;
public class Programa {
   
    public static void main(String arg[]) {
        ListaDeAnimales la = new ListaDeAnimales();
        iniciarLista(la);
        presentarLista(la);
        numeroAnimalEliminar(la);
       }

    public static void iniciarLista(ListaDeAnimales la){
        la.getListaDeAnimales().add(new Animal("Pantera         ","Penelope",98.55,4));
        la.getListaDeAnimales().add(new Animal("Loro Amazonico  ","Juanito ",3.67,2));
        la.getListaDeAnimales().add(new Animal("Perro Gran Danes","Artur   ",38.77,4));
        la.getListaDeAnimales().add(new Animal("Mono de Tanzania","Monk    ",55.32,4));
    }

    public static void presentarLista(ListaDeAnimales la){
        Iterator<Animal> it;
        Animal e; // Este objeto lo usaremos para almacenar temporalmente objetos Animal
         System.out.println("Los animales en la lista son: " );
        System.out.print("Numero Especie            Nombre  \tPeso  Patas\n");
        it = la.iterator();
        int i=1;
        while (it.hasNext() ) {
            e = it.next();
            System.out.print( "  " +(i++)+"\t"+
                            e.getEspecie()+"  "+
                            e.getNombre()+"\t"+
                            e.getPeso()+"\t"+
                            e.getPatas()+"\n");

        }
    }
    public static void numeroAnimalEliminar(ListaDeAnimales la){
    Scanner x = new Scanner (System.in);    //Creación de un objeto Scanner
        String scTeclado;
        //Convertir cadena a numero entero
        int numEliminar=0;
        while(numEliminar<1 || numEliminar>4){
            System.out.print("Introduzca el numero de Animal a eliminar: ");
            scTeclado = x.nextLine ();
            numEliminar= Integer.parseInt(scTeclado);
            if(numEliminar<1 || numEliminar>4)
            {
                System.out.print(scTeclado+" Numero Erroneo ¡¡¡¡\n");
            }
            else{
               int i=1;
                Iterator<Animal> it2;
                 
                it2=la.iterator();
                while (it2.hasNext() ) {
                    Animal tmp=it2.next();
                    if (i==numEliminar) {
                         System.out.print( "\nAnimal a eliminar, Especie: "+
                            tmp.getEspecie()+", Nombre:  "+
                            tmp.getNombre()+", Peso: "+
                           tmp.getPeso()+", Nº Patas: "+
                            tmp.getPatas()+"\n\n");
                        it2.remove();
                    }
                    i++;
                }
            }   
        }
         presentarLista(la);
    }
}

Adios. ;)

3
Hola dejo el ejercicio CU00918C del tutorial pdf de Java avanzado: Interface Comparator (API java). Diferencias con Comparable. Clase Collections. Código ejemplo.

Codigo de la clase TestEjecicio metodo main()
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Collections;
public class TestEjecicio {
    public static void main(String arg[]) {
        ArrayList<Estudiante> listaEstudiante = new ArrayList<Estudiante>();
        listaEstudiante.add(new Estudiante("Carlos",19,3));
        listaEstudiante.add(new Estudiante("Felipe",18,4));
        listaEstudiante.add(new Estudiante("Ana",18,4));
        listaEstudiante.add(new Estudiante("Rosa",15,1));
        listaEstudiante.add(new Estudiante("Jose",10,2));

        System.out.print("---------------------------------------\n");
        System.out.println("Lista de estudiantes sin ordenar\n---------------------------------------");
        PresentarListas(listaEstudiante);//Se presenta la lista sin ordenar
        System.out.print("---------------------------------------\n");
        System.out.println("Personas Ordenadas por orden natural\n---------------------------------------");
        Collections.sort(listaEstudiante);  // Ordenar por orden natural (alfabetico) por nombre
        PresentarListas(listaEstudiante);   // Presentar la lista 
        System.out.print("---------------------------------------\n ");
        System.out.println("Personas Ordenadas por Edad\n---------------------------------------");
        Collections.sort(listaEstudiante, new CompararEstudiantePorEdad());// Ordenar por edad
        PresentarListas(listaEstudiante);//Presentar la lista
        System.out.print("---------------------------------------\n ");
        System.out.println("Personas Ordenadas por Curso\n---------------------------------------");
        Collections.sort(listaEstudiante, new CompararEstudiantePorCurso());// Ordenar por curso
        PresentarListas(listaEstudiante);//Presentar la lista 
        System.out.println("\n---------------------------------------");
    }
    //Metodo para presentar las listas de estudiantes ordenadas
    public static void PresentarListas(ArrayList<Estudiante> listaEstudiante){
        System.out.print("Presentar la lista listaEstudiante\n");
        System.out.print(listaEstudiante.toString()+"\n");
        System.out.print("Presentar la Clase Estudiante con los metodos get\n");
        System.out.println("\tNombre\tEdad\tCurso\t");
        for(Estudiante tmp:listaEstudiante){
            System.out.print("\t"+tmp.getNombre()+"\t"+tmp.getEdad()+"\t"+tmp.getCurso()+"\n");
        }

       
    }
}

Clase Estudiantes
Código: [Seleccionar]
public class Estudiante implements Comparable<Estudiante> {
    private String nombre;
    private int edad;
    private int curso;

    public Estudiante(){
        nombre="";
        edad=0;
        curso=0;
    }   

    public Estudiante ( String nombre, int edad, int curso) {

        this.nombre = nombre;
        this.edad = edad;
        this.curso = curso;
    }

    @Override
    public String toString() {
        return "Estudiante =>: "+nombre+" Edad: "+edad+" Curso: "+curso+"\n";}

    @Override
    public int compareTo(Estudiante o) {
        return this.nombre.compareTo(o.nombre);
    }

    public String getNombre() {return nombre;}

    public int getEdad() {return edad;}

    public int getCurso() {return curso;}

    public void setNombre() {this.nombre=nombre;}

    public void setEdad() {this.edad=edad;}

    public void setCurso() {this.curso=curso;}
}


Clases CompararEstudiantePorCurso y CompararEstudiantePorEdad
Código: [Seleccionar]
import java.util.Comparator;

public class CompararEstudiantePorCurso implements Comparator<Estudiante> {
    @Override
    public int compare(Estudiante o1, Estudiante o2) {
    return o1.getCurso() - o2.getCurso(); // Devuelve un entero positivo si la altura de o1 es mayor que la de o2
    }
}
Código: [Seleccionar]
import java.util.Comparator;

public class CompararEstudiantePorEdad implements Comparator<Estudiante> {
    @Override
    public int compare(Estudiante o1, Estudiante o2) {
    return o1.getEdad() - o2.getEdad(); // Devuelve un entero positivo si la altura de o1 es mayor que la de o2
    }
}
Adios  ;)

4
Hola dejo el ejercicio CU00915C del curso avanzado de programación Java de aprenderaprogramar. Interface Iterable y método Iterator (API Java). Recorrer colecciones. Ejercicio y ejemplo resuelto

Citar
Crea una clase denominada AvesEnZoo con 4 atributos. Uno será de tipo String  (tipoDeAve) y los otros tres serán de tipo int (numeroAves, numeroMachos, numeroHembras).

Crea una clase GruposDeAvesZoos que implemente la interface Iterable. Crea varios objetos de tipo AvesEnZoo y añádelos a un objeto GruposDeAvesEnZoos. Utilizando un iterador, muestra los datos de los objetos presentes en el objeto GruposDeAvesZoos.

Clase AvesEnZoo
Código: [Seleccionar]
public class AvesEnZoo  { 
    public String tipoDeAve;
    public int numeroAves, numeroMachos, numeroHembras;
    public AvesEnZoo(String tAve,int nAves, int nMachos, int nHembras)
    {
        this.tipoDeAve= tAve; 
        this.numeroAves =nAves ;
        this.numeroMachos=nMachos;
        this.numeroHembras=nHembras;
    }

}

Clase GruposDeAvesZoo
Código: [Seleccionar]
import java.util.Iterator;

/* Ejemplo interface Iterable aprenderaprogramar.com */

public class  GruposDeAvesZoo implements Iterable<AvesEnZoo>{

    public AvesEnZoo[] gruposDeAvesZoo; // Atributo de la clase

    public GruposDeAvesZoo (AvesEnZoo [] aves) {
        // Constructor de la clase
        gruposDeAvesZoo = aves; 
    }

    public Iterator<AvesEnZoo> iterator() {
        Iterator it = new MiIteratorAves();
        return it;         
    }


    protected class MiIteratorAves implements Iterator<AvesEnZoo>   {
        protected int posicionarray;
        public MiIteratorAves()   {
            posicionarray = 0;
        }
        public boolean hasNext() {
            boolean result;
            if (posicionarray < gruposDeAvesZoo.length) { result = true; }
            else { result = false; }
            return result;
        }
        public AvesEnZoo next() {
           posicionarray++;
            return gruposDeAvesZoo[posicionarray-1];
        }

        public void remove(){
            throw new UnsupportedOperationException("No soportado.");
        }

    }

}

Modulo de la clase TestIterator
Código: [Seleccionar]
import java.util.Iterator;
public class TestsIterator {
    public static void main(String arg[]) {
        AvesEnZoo ave1 = new AvesEnZoo("Avestruz",15,5,10);
        AvesEnZoo ave2 = new AvesEnZoo("Aguila  ",5,3,2);
        AvesEnZoo ave3 = new AvesEnZoo("Pato    ",55,35,20);
        AvesEnZoo ave4=  new AvesEnZoo("Alcon   ",10,3,7);
        AvesEnZoo[] aves = {ave1,ave2,ave3,ave4};
        GruposDeAvesZoo grupoAves = new GruposDeAvesZoo(aves);
         
        System.out.println("|TIPO     |TOTAL|MACHOS|HEMBRAS|");
        System.out.println("|---------|-----|------|-------|");
        for (AvesEnZoo ab : grupoAves) // Esto es un for extendido o for-each
        {
             
            System.out.printf("|%s |%5d|%6d|%7d|\n",ab.tipoDeAve,ab.numeroAves,ab.numeroMachos,ab.numeroHembras);
            System.out.println("|---------|-----|------|-------|");
        }
         
      }
}
Gracias. ;)

5
Hola dejo el Ejercicio CU00914C del curso java avanzado. StringBuffer, StringBuilder Java. Ejemplo. Diferencias entre clases. Criterios para elegir. Métodos.

Citar
EJERCICIO
Realizar un programa que realice lo siguiente:
a) Crear un StringBuilder con la cadena "Hola Caracola" y mostrarla por consola.
b) Mostrar por consola su capacidad y longitud.
c) Partiendo de la cadena anterior y usando los métodos de StringBuilder modificar la cadena para que pase a ser "Hay Caracolas" y mostrarla por consola.
d) Partiendo de la cadena anterior y usando los métodos de StringBuilder modificar la cadena para que pase a ser "Hay 5000 Caracolas" y mostrarla por consola. El número entero 5000 debe estar almacenado en un int inicialmente.
e) Partiendo de la cadena anterior y usando los métodos de StringBuilder modificar la cadena para que pase a ser "Hay 5000 Caracolas en el mar" y mostrarla por consola.
f) Almacenar en un String los últimos 4 carácteres del StringBuilder resultante y mostrar ese String por consola.
g) Mostrar por  consola  la capacidad y longitud del StringBuilder final.
h) Realizar el mismo ejercicio con la clase StringBuffer.

Ejemplo de ejecución:

El StringBuilder es : Hola Caracola
Capacidad inicial = 29
Longitud inicial = 13
Hay Caracolas
Hay 5000 Caracolas
Hay 5000 Caracolas en el mar
 mar
Capacidad final = 29
Longitud final = 28


codigo de la claseTestStringBuilderStringBuffer

Código: [Seleccionar]
public class TestStringBuilderStringBuffer
{public static void main(String[] args) { 
        StringBuilder cadena = new StringBuilder("Hola Caracola");
        System.out.println("Contenido de StringBuilder: "+cadena+
            "\nCapacidad: "+cadena.capacity()+
            "\nLongitud: "+cadena.length());
        cadena.replace(0,4,"Hay");
        cadena.insert(12,"s");
        System.out.println("Modificamos (Hola caracola) por :"+ cadena);
        int n=5000;
        cadena.insert(4,n+" ");
        cadena.insert(18," en el mar");
        System.out.print("Modificamos (Hay caracolas) por :"+cadena+"\n");
        String tmp;
        tmp=cadena.substring(24,28).toString();
        System.out.println("Convertimos los 4 ultimos caracteres de StringBuilder a String: "+tmp+
        "\nCapacidad: "+cadena.capacity()+
            "\nLongitud: "+cadena.length());
            System.out.println("*****************************************");
            StringBuffer cadena2 = new StringBuffer("Hola Caracola");
        System.out.println("Contenido de StringBuffer: "+cadena2+
            "\nCapacidad: "+cadena2.capacity()+
            "\nLongitud: "+cadena2.length());
        cadena2.replace(0,4,"Hay");
        cadena2.insert(12,"s");
        System.out.println("Modificamos (Hola caracola) por :"+ cadena2);
       
        cadena2.insert(4,n+" ");
        cadena2.insert(18," en el mar");
        System.out.print("Modificamos (Hay caracolas) por :"+cadena2+"\n");
        String tmp2;
        tmp2=cadena2.substring(24,28).toString();
        System.out.println("Convertimos los 4 ultimos caracteres de StringBuffer a String: "+tmp2+
        "\nCapacidad: "+cadena2.capacity()+
            "\nLongitud: "+cadena2.length());
       
    }
}

Gracias ;)

6
Hola.
Dejo la ÚNICA SOLUCIÓN que se me ha ocurrido para el Ejercicio  CU00913C ejemplo resuelto interface Comparable y método compare To (API Java). Comparar objetos ()

Citar
EJERCICIO

Utilizando Comparable y compareTo resuelve el siguiente problema donde debemos partir de una clase Persona con atributos nombre, edad y altura. Queremos ordenar por edad y por altura a las siguientes personas:
1. Mario - Altura: 187 - Edad: 22
2. Pepe - Altura: 173 - Edad: 52
3. Manuel - Altura: 158 - Edad: 27
4. David - Altura: 164 - Edad: 25
5. Alberto - Altura: 184 - Edad: 80

Debemos comparar las personas y ordenarlas por altura primero (de mayor a menor) y por edad (de menor a mayor) después. Por pantalla debe mostrarse la lista de personas sin ordenar, ordenada por altura y ordenada por edad. Ejemplo de ejecución:

 Personas sin ordenar
1. Mario - Altura: 187 - Edad: 22
2. Pepe - Altura: 173 - Edad: 52
3. Manuel - Altura: 158 - Edad: 27
4. David - Altura: 164 - Edad: 25
5. Alberto - Altura: 184 - Edad: 80

Personas ordenadas por altura
1. Mario - Altura: 187 - Edad: 22
2. Alberto - Altura: 184 - Edad: 80
3. Pepe - Altura: 173 - Edad: 52
4. David - Altura: 164 - Edad: 25
5. Manuel - Altura: 158 - Edad: 27

Personas ordenadas por edad
1. Mario - Altura: 187 - Edad: 22
2. David - Altura: 164 - Edad: 25
3. Manuel - Altura: 158 - Edad: 27
4. Pepe - Altura: 173 - Edad: 52
5. Alberto - Altura: 184 - Edad: 80

Código del modulo de la clase Persona Comparable<Persona>
Código: [Seleccionar]
public class Persona implements Comparable<Persona>{
    public String nombre;
    public int edad, altura;

    //Constructor
    public Persona( String nom,int al, int ed){
        this.nombre=nom;
        this.altura = al;
        this.edad = ed;
    }

    //Metodos set
    public String getNombre(){ return nombre;}

    public int getAltura(){ return altura;}

    public int getEdad(){ return edad;}
    //Metodos get
    public void setNombre(){ this.nombre=nombre;}

    public void  setAltura(){ this.altura=altura;}

    public void  setEdad(){ this.edad=edad ;}

    public String toString(){
        String msg="";
        msg="Nombre:\t"+nombre+"\tAltura:\t "+altura+"\tedad:  "+edad;
        return msg;
    }

    @Override //Anulamos el error y creamos otro compareTo
    // Asi evitamos crear un metodo para cada comparacion
    public int compareTo(Persona o ) {
       
        int resultado=0;
       

        return resultado;
    }
//Comparar por edad y altura
//Se le pasa la variable cadena para ejecutar la comparacion por edad o por altura
    public int compareToPersona(Persona o,String cadena ) {
        int resultado=0;
        if (cadena.equals("Edad")){
        if (this.edad<o.edad) {  resultado = 1;    }// Cambio el valor de resultado para no crear otro metodo de ordenacion
        else if (this.edad>o.edad) {   resultado = -1;   }
        else {   resultado = 0;   }
    }
      if (cadena.equals("Altura")){
        if (this.altura<o.altura) {   resultado = -1;      }
        else if (this.altura>o.altura) {    resultado = 1;      }
        else {   resultado = 0;   }
        }

        return resultado;
    }
}

Codigo del modulo de la Clase TestCompareTo
Código: [Seleccionar]
public class TestCompareTo
{

    public static void main(String arg[]) {   
        Persona[] persona=new Persona[5];
       
       
String comparePor;//Variable para utilizar en el método de burbuja y en el comparador                         
                           //Seleccionamos la ordenación por Edad o Altura

        persona[0] = new Persona("Mario",187,22);
        persona[1] = new Persona("Pepe",176,52); 
        persona[2] = new Persona("Manuel",158,27); 
        persona[3] = new Persona("David",164,25); 
        persona[4] = new Persona("Alberto",184,80); 
        System.out.println("\n\nArray desordenado");
        for(int i=0;i < persona.length;i++){
            System.out.println(persona[i]);
        }
        comparePor="Altura";//Ordenar y comparar por altura
        burbuja(persona,comparePor);
        System.out.println("\n\nArray Ordenado por altura de mas altura a menos altura");
        for(int i=0;i < persona.length;i++){
            System.out.println(persona[i]);
        }
        comparePor="Edad";//Ordenar y comparar por Edad
        burbuja(persona,comparePor);
        System.out.println("\n\nArray Ordenado por edad de menos edad a mas edad");
        for(int i=0;i < persona.length;i++){
            System.out.println(persona[i]);
        }

    }// Fin del main
    //*****************************************************
    //Metodo de ordenacion por burbuja 
    public static void burbuja(Persona[]matriz,String comparePor){
        Persona[] buffer=new Persona[5];
        int i,j;
        for(i = 0; i < matriz.length; i++)
        {
            for(j = 0; j < i; j++)
            {//Si queremos ordenar de menor a mayor solo hay que cambiar > por <
                if(matriz[i].compareToPersona(matriz[j],comparePor)>0){
                    buffer[0] = matriz[j];
                    matriz[j] = matriz[i];
                    matriz[i] = buffer[0];
                }
            }
        }
    }//Fin metodo Burbuja
   
}//Fin de la Clase

Gracias. ;)

7
Hola, dejo el Ejercicio CU00912C del tutorial de programación avanzada Java: ejemplo resuelto interface Cloneable y método clone del API Java. Cómo duplicar objetos .

Citar
EJERCICIO

Define una clase que tenga cuatro atributos de tipo String cada uno de los cuales podrá ser exclusivamente una cadena de 12 ceros o de 12 unos. Es decir, cada atributo puede valer o bien "000000000000" ó bien "111111111111". La clase debe implementar la interface Cloneable y disponer de un método que permita ver el resultado de concatenar sus atributos.

Crea otra clase con el main donde crees un objeto cuyos atributos serán: "000000000000", "000000000000", "000000000000", "000000000000".

A partir de este primer objeto, crea cuatro copias usando el método clone() y modifícalas para llegar a tener cinco objetos (el inicial más los otros cuatro copias del original y luego modificados) cuyo contenido mostrarás por pantalla, debiendo obtener el siguiente resultado:

000000000000000000000000000000000000000000000000

111111111111000000000000000000000000000000000000

000000000000111111111111000000000000000000000000

000000000000000000000000111111111111000000000000

000000000000000000000000000000000000111111111111


Citar
Codigo de la Clase MetodoClone

Código: [Seleccionar]
public class MetodoClone implements Cloneable
{
    private  String cero = new String(new char[12]).replace("\0", "0");
    private String chain1, chain2, chain3, chain4;
    public MetodoClone(){
        chain1= cero;
        chain2= cero;
        chain3= cero;
        chain4= cero;
    }

    public MetodoClone(String chain1,String chain2,String chain3,String chain4){
        this.chain1= chain1;
        this.chain2= chain2;
        this.chain3= chain3;
        this.chain4= chain4;
    }

    public void setChain1(String chain1){
        this.chain1=chain1;
    }

    public void setChain2(String chain2){
        this.chain2=chain2;
    }

    public void setChain3(String chain3){
        this.chain3=chain3;
    }

    public void setChain4(String chain4){
        this.chain4=chain4;
    }

    public String getChain1(){
        return chain1;
    }

    public String getChain2(){
        return chain2;
    }

    public String getChain3(){
        return chain3;
    }

    public String getChain4(){
        return chain4;
    }

    public MetodoClone clone(){
        MetodoClone duplicado =new MetodoClone(this.chain1,this.chain2,this.chain3,this.chain4);
        return duplicado;
    }

    public String toString() {
        String msg="";
        msg=chain1+ chain2+ chain3+ chain4;
        return msg;
    }

}

Codigo de la Clase TestMetodClonable
Código: [Seleccionar]
public class TestMetodClonable
{

    public static void main(String arg[]){
        String uno = new String(new char[12]).replace("\0", "1");
        String cero = new String(new char[12]).replace("\0", "0");

        MetodoClone duplicado=new MetodoClone(cero,cero,cero,cero);
        System.out.println(duplicado.toString());
        MetodoClone d1=duplicado.clone();
        MetodoClone d2=duplicado.clone();
        MetodoClone d3=duplicado.clone();
        MetodoClone d4=duplicado.clone();
        d1.setChain1(uno);
        d2.setChain2(uno);
        d3.setChain3(uno);
        d4.setChain4(uno);
        System.out.println(d1.toString()+"\n"+d2.toString()+"\n"+d3.toString()+"\n"+d4.toString());

    }

}

Gracias ;)

8
Hola dejo el ejercicio CU00911C Paquete java.lang. Interfaces, clases (String, Stringbuffer, StringBuilder) Concepto de inmutabilidad. 

Citar
EJERCICIO

En esta entrega hemos podido ver lo siguiente: StringBuilder puede ofrecer resultados no consistentes en una ejecución multihilo (concurrente, con distintos “subprogramas” ejecutándose simultáneamente) ya que sus métodos no son sincronizados.

Busca información en internet y trata de poner un ejemplo de cómo podría generarse una inconsistencia en programación multihilo. No hace falta que escribas código, únicamente es necesario describir en unas pocas líneas (como si estuvieras explicándoselo a un amigo) la idea o situación.

Buscando en internet he encontrado este ejemplo y creo que es muy bueno par explicar la inconsistencia entre hilos de java.:
Citar
Suponga un simple campo int definido e inicializado:
int counter = 0;
el campo counter es compartido entre dos hilos, A y B. Suponga que el hilo A incrementa counter.

counter ++;
Entonces enseguida el hilo B imprime counter:
System.out.println (counter);


Si las dos sentencias han sido ejecutado en el mismo hilo, sería seguro asumir que el valor impreso podría ser “1”.
Pero si las dos sentencias son ejecutadas en hilos separados, el valor impreso podría ser “0”, porque no hay garantía que el cambio hecho por el hilo A a counter va a ser visible al hilo B -- amenos que el programador haya establecido una relación sucede-antes entre estas dos sentencias.

Si tenemos dos procedimientos diferentes y en uno incrementamos counter++ y en otro presentamos por pantalla counter, para que no haya inconsistencia se tendría que llamar al procedimiento que incrementa el contador antes de llamar a presentar por pantalla.
Si se llamara al procedimiento que presenta por pantalla el counter antes de incrementarlo no presentaríamos un valor real del counter (o si porque igual queremos presentar ese valor sin incremento) lo cual da lugar a inconsistencia de los datos ya que al trabajar con dos hilos diferentes sin sincronizar no presenta los datos reales.

Como dice Ogramar en https://aprenderaprogramar.com/foros/index.php?topic=6848.msg25434#msg25434

Citar
Supongamos una aplicación multihilo donde un hilo 1 se encarga de realizar la reserva de un determinado asiento en un avión, mientras que otro hilo 2 se encarga de consultar los asientos libres en el avión para servirlos a una página web e informar así a un usuario que quiere realizar una compra o reserva.

Supongamos que los asientos y si están libres u ocupados están localizados en una estructura de datos localizada en ciertas posiciones de memoria principal cuya escritura requiere 2 segundos y cuya lectura requiere 1 segundo (ejemplo no real).

Supongamos que a las 10:00:00 una persona ha comprado un asiento pero la escritura no se ha formalizado hasta las 10:00:02, mientras que otra persona ha consultado los asientos libres a las 10:00:01.

Si no existe sincronización, implica que no está establecido quién tiene preferencia para usar el recurso, en este caso la memoria, y el resultado sería que la persona que ha consultado el estado de los asientos obtendría como resultado que el asiento que ha comprado la otra persona está libre.

Cuando existe sincronización, implicaría que sí está establecido quién tiene preferencia para usar el recurso, y el resultado sería que la persona que ha consultado el estado de los asientos no podría conocerlo hasta que termine el otro hilo de trabajar.
Gracias.
Un Saludo ;)

9
Hola dejo el ejercicio CU00909C del manual pdf de programación Java avanzada. Ejemplos de números aleatorios clase Random. Enteros con nextInt ().

Citar
EJERCICIO Nº 1

Crea un programa que elija dos números enteros aleatorios A y B pero no los muestre por pantalla aún. Si los dos números fueran iguales, deberá repetirse la elección hasta que sean distintos. El programa preguntará por quién apostamos, A o B (gana el número más alto). Una vez el usuario haya introducido su apuesta, el programa mostrará el valor de A y B, dirá si hemos ganado la apuesta (acertado el número más alto) o perdido y nos dirá cuántas partidas hemos ganado y perdido hasta el momento. Tras una jugada, nos preguntará si queremos jugar otra vez.

Código del ejercicio 1

Clase ApuestaAlMasAlto

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

/**
 * Write a description of class AdivinarNumero here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class ApuestaAlMasAlto
{
    public static String entradaUsuario="";
    public static Scanner entrada=new Scanner(System.in);

    public static void main(String arg[ ]) {

        GenerarAleatorio rnd= new GenerarAleatorio();
        Marcador marcador= new Marcador();
        String separador = new String(new char[63]).replace("\0", "*");
        boolean fin=true;
        int a=0,b=0;//Variables para las apuestas
        int ganadas=0,perdidas=0;
        int rangoI=1, rangoF=100;
        rnd.setInicioRango(rangoI);
        rnd.setFinRango(rangoF);

        do{

            a=rnd.getEnteroRnd();
            b=rnd.getEnteroRnd();
            while(a==b){
                a=rnd.getEnteroRnd();

            }
            String introducidos="";
            System.out.print("\t\t\t"+separador+
                "\n\t\t\t** Ejercicio CU00909C-1 Java avanzado aprenderaprogramar.com **\n"+
                "\t\t\t***                                                         ***\n"+
                "\t\t\t***               JUEGO NUMERO MAS ALTO A o B               ***\n"+
                "\t\t\t***                                                         ***\n"+
                "\t\t\t"+separador+"\n\n");
            System.out.print("\t\t\t\t¿POR QUIEN APUESTA POR A O POR B?: ");
            entradaUsuario=entrada.nextLine().toUpperCase();
            boolean entraBucle=entradaUsuario.equals("A") || entradaUsuario.equals("B");
            //Mientras entradaUsuario no sea A o B se repite el bucle
            while (entraBucle==false){
                System.out.print("\t\t\t\t NO SOLO POR ¿ A O POR B ?: ");
                entradaUsuario=entrada.nextLine().toUpperCase();
                entraBucle=entradaUsuario.equals("A") || entradaUsuario.equals("B");

            }

            System.out.print("\n");
            if (a>b && entradaUsuario.equals("A")){
                System.out.print("\t\t\tA saca un "+a+" B saca un "+b+
                    "\n\n\t\t\t¡¡¡¡¡ PREMIO HAS GANADO !!!!!!");
                ganadas++;
                marcador.setAciertos(ganadas);
            }
            else if (b>a && entradaUsuario.equals("B")){
                System.out.print("\t\t\tA saca un "+a+" B saca un "+b+
                    "\n\n\t\t\t¡¡¡¡¡ PREMIO HAS GANADO !!!!!!");
                ganadas++;
                marcador.setAciertos(ganadas);
            }
            else {
                System.out.print("\t\t\tA saca un "+a+" B saca un "+b+
                    "\n\n\t\t\t¡¡¡¡¡ HAS PERDIDO !!!!!!");
                perdidas++;
                marcador.setFallos(perdidas);
            }
            System.out.print("\n\n\t\tLlevas "+ marcador.getAciertos()+" partidas ganadas y "+marcador.getFallos()+" partidas perdidas\n");
            System.out.print("\n\n\t\t\t¡¡ PULSE INTRO PARA CONTINUAR !!\n\n\t\t\tCualquier otra + intro FINALIZAR\n\n");
            entradaUsuario=entrada.nextLine();
            System.out.print('\u000C');
            fin=entradaUsuario.equals("");
        }while(fin);
        System.out.print("\n\n\n\n\n\t\t\t"+separador+
            "\n"+"\t\t\t"+separador+
            "\n\t\t\t\t\t\tADIOS"+
            "\n\t\t\t"+separador+
            "\n"+"\t\t\t"+separador+"\n");
    }//Fin main
    //Bucle para validar que solo se escriban numeros por teclado

}

Clase Marcador

Código: [Seleccionar]
public class Marcador
{
     int aciertos;
     int fallos;
     int numJugadas;
     //Constructores
    public Marcador()
    {
        this.aciertos=aciertos;
        this.fallos=fallos;
        this.numJugadas=numJugadas;
    }
    public int getAciertos(){
    return aciertos;
    }
    public int getFallos(){
    return fallos;
    }
    public int getNumJugadas(){
    return numJugadas;
    }
    public void setAciertos(int aciertos){
            this.aciertos=aciertos;
    }
    public void setFallos(int fallos){
           this.fallos=fallos;
    }
     public void setNumJugadas(int numJugadas){
            this.numJugadas=numJugadas;
    }
     
}


Clase GenerarAleatorio compartida por ApuestaAlMasAlto y LoteriaPrimitiva

Código: [Seleccionar]
import java.util.Random;
public class GenerarAleatorio
{
    private Random enteroRnd;
    private int finRango;
    private int inicioRango;

    /**
     * Constructor for objects of class GenerarAleatorio
     */
    //Constructores
    public GenerarAleatorio()
    {
        // initialise instance variables
        this.enteroRnd=new Random();
        this.finRango=0;
        this.inicioRango=0;
    }

    public GenerarAleatorio(Random enteroRnd,int finRango,int inicioRango)
    {
        // initialise instance variables
        this.enteroRnd=new Random();
        this.finRango=finRango;
        this.inicioRango=inicioRango;
    }
    // Metodos get
    public int getFinRango(){
        return finRango;
    }
     public int getInicioRango(){
        return inicioRango;
    }
    public int getEnteroRnd(){
      return enteroRnd.nextInt(finRango)+inicioRango;
   
    }
    //Metodos set
    public void setFinRango(int finRango){
    this.finRango=finRango;
    }
   
    public void setInicioRango(int inicioRango){
     this.inicioRango=inicioRango;
    }
}


Citar
EJERCICIO Nº 2

Ahora vamos a jugar a la “Lotería primitiva”. Para ello, se pedirá al usuario que introduzca 6 números enteros comprendidos entre el 1 y el 49 ambos incluidos. No estará permitido repetir número. Una vez elegidos los seis números el programa nos mostrará nuestros 6 números así como la combinación ganadora (ordenada de menor a mayor). Esta combinación constará de 6 números entre 1 y 49 elegidos al azar por el programa. Finalmente nos dirá cuántos aciertos hemos tenido y nos preguntará si queremos volver a jugar.


Nota: para ejecutar este ejercicio debe incluirse el código de la clase GenerarAleatorio que figura en el ejercicio anterior.

Codigo de la Clase LoteriaPrimitiva

Código: [Seleccionar]
import java.util.Scanner;
public class LoteriaPrimitiva
{
    //Crear variables y Objeto entrada para entrar numeros por teclado
    public static String entradaUsuario="";
    public static Scanner entrada=new Scanner(System.in);
    //Clase main
    public static void main(String arg[ ]) {
        //Separador par presentacion en pantalla
        boolean fin=true; //Variable para finalizar bulce
        do{
            String separador = new String(new char[63]).replace("\0", "*");
           
            int rangoI=1,rangoF=49;// Rango de numeros de inicio y fin de Random()
            int numLoteria=0; //Variable para coger los numeros de la loteria
            GenerarAleatorio rnd= new GenerarAleatorio();// Crear objeto que genera los numeros de la loteria
            rnd.setInicioRango(rangoI);// Poner el numero de inicio del rango de Random
            rnd.setFinRango(rangoF);// Poner el numero de fin del rango de Random
            int contador=0;// Variable contador para terminar el bucle cuando llege a 6 numeros que no sean iguales
            ListaApuestaSorteo listaApuesta=new ListaApuestaSorteo();// Lista para los numeros de la apuesta del usuario
            ListaApuestaSorteo listaSorteo=new  ListaApuestaSorteo();// Lista aleatoria de la loteria


            System.out.print("\t\t\t"+separador+
                "\n\t\t\t*** Ejercicio CU0090C2 Java avanzado aprenderaprogramar.com ***\n"+
                "\t\t\t***\t\t JUEGO LOTERIA PRIMITIVA \t\t    ***\n"+
                "\t\t\t***        Introduzca los 6 numeros de su apuesta           ***\n"+
                "\t\t\t***     del 1 al 49 no se admiten numeros repetidos         ***\n"+
                "\t\t\t"+separador+"\n\n");
            //Bucle para sacar los seis numeros del sorteo
            do{
                numLoteria=rnd.getEnteroRnd();
                //Validar que el numero no este repetido en la lista
                if(listaSorteo.numeroEnLista(numLoteria)!=true){
                    contador++;
                    listaSorteo.setNumero(numLoteria);//Si el numero no esta repetido incluir en la lista
                }
            }while(contador<6);

            contador=0;
            int aciertos=0, numeroApuesta=0;
            ValidarNumero NumAValidar=new ValidarNumero();
            //Bucle para sacar los seis numeros de la apuesta
            do{

                System.out.print(" \t\tIntroduzca la apuesta Nº "+(contador+1)+" Su numero: ");
                //Validar que solo sean numeros y entrada por teclado
                numeroApuesta=Integer.parseInt( ValidarNumero.validarNumero(entradaUsuario));
                // Comprobar que la horqulla numerica este entre 1 y 49 ambos inclusive
                if(numeroApuesta<1 || numeroApuesta>49){
                    System.out.print(" \t\tEl numero: "+numeroApuesta+" no es valido\n");
                    numeroApuesta=0;
                }
                //Comprobar que el numero no este repetido
                else if(listaApuesta.numeroEnLista(numeroApuesta)!=true){
                    contador++;//Se añade 1 al contador
                    listaApuesta.setNumero(numeroApuesta);//Si el numero no esta repetido incluir en la lista
                }
                else { System.out.print(" \t\tEl numero "+numeroApuesta+"esta repetido\n");}
            }while(contador<6);

            System.out.print('\u000C');
            //Odenar listas
            listaSorteo.getOrdenarLista();listaApuesta.getOrdenarLista();
            String numeroAcertado="";//Variable para los numeros acertados
            for (int i=0; i<listaSorteo.getTamañoLista();i++){
                if(listaApuesta.numeroEnLista(listaSorteo.getPosicionNumero(i))){
                    aciertos++;
                    numeroAcertado=numeroAcertado+ Integer.toString(listaSorteo.getPosicionNumero(i))+" ";
                }
            }
            // Presentar datos por pantalla
            String msgFinal= "\n\n\n\n\n\t\t\t"+separador+"\n\t\t\t"+separador+
                "\n\t\t\t\tResultado del sorteo:\t "+listaSorteo.getApuestaSorteo()+
                "\n\t\t\t\tSu Apuesta :\t\t "+listaApuesta.getApuestaSorteo()+
                "\n\t\t\t\tNumero de aciertos: "+aciertos+
                "\n\t\t\t\tEl/Los Numero(s) acertado(s) son: "+numeroAcertado+
                "\n\t\t\t\tPULSE INTRO PARA CONTINUAR  F+INTRO PARA FINALIZAR "+
                "\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n";
            System.out.print(msgFinal);
            entradaUsuario=entrada.nextLine();
            System.out.print('\u000C');
            fin=entradaUsuario.equals("");
        }while(fin); 
 System.out.print('\u000C'+"ADIOS");
    }//Fin main
}


Codigo de la clase ValidarNumero

Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class ValidarNumero here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class ValidarNumero
{ //Bucle para validar que solo se escriban numeros por teclado
    public static Scanner entrada=new Scanner(System.in);
    public static String validarNumero(String entradaUsuario){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (isNumeric(entradaUsuario) == true) {
                ok=true;
            }
            else{
               
                System.out.print("Solo se admiten numeros\n");
                entradaUsuario="";
            }

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }
}


Codigo de la Clase ListaApuestaSorteo

Código: [Seleccionar]
import java.util.Collections;
import java.util.LinkedList;
public class ListaApuestaSorteo
{
    private LinkedList<Integer> apuestaCombinacion;
    //Constructor
    public ListaApuestaSorteo(){
        apuestaCombinacion=new LinkedList();
    }
    //Metodos get
    public LinkedList<Integer> getNumero(){
        return apuestaCombinacion;   
    }

    public int getTamañoLista(){
        return apuestaCombinacion.size();
    }

    public LinkedList getOrdenarLista(){
        Collections.sort(apuestaCombinacion);
        return apuestaCombinacion;
    }

    public int getPosicionNumero(int index) {
        return apuestaCombinacion.get(index);
    }

    public String getApuestaSorteo(){
        String msg = "";
        for(int numero: apuestaCombinacion) {
            msg += "["+numero + "] ";
        }
        return msg;
    }

   
    //Metodos set
    public void setNumero(int numero){
        apuestaCombinacion.add(numero);
    }

    public boolean numeroEnLista(int numero){
        return apuestaCombinacion.contains(numero);
    }


}

Gracias. Un saludo ;)

10
Hola dejo el ejercicio  CU00908C del taller de programación Java avanzado de aprenderaprogramar. Generación de números aleatorios en Java. Rangos. Clase Random. 


Citar
EJERCICIO

Crea un programa que cumpla lo indicado a continuación. El programa permitirá jugar a “adivinar un número entero” tantas veces como el usuario desee. En cada ocasión el programa pedirá al usuario el número inicial y el número final de la serie de números entre los que se encontrará el número a adivinar. También preguntará el número de intentos permitidos. En cada intento el número a adivinar será diferente y estará dentro del rango definido por el usuario.

Trás los intentos el programa nos dirá cuantas veces hemos acertado y cuántas veces hemos fallado, los números que eran solución y nos preguntará si queremos volver a jugar.

Ejemplo de ejecución:

Introduce el numero inicial del rango: 40
Introduce el numero final del rango: 60
Introduce el numero de intentos: 2
¿Qué numero estoy pensando? : 44
No has acertado
¿Qué numero estoy pensando? : 42
No has acertado
Has acertado 0 veces y has fallado 2 veces. Eran solución: 49, 41
Quieres probar otra vez ? (S/N): S
Introduce el numero inicial del rango: 4
Introduce el numero final del rango: 6
Introduce el numero de intentos: 2
¿Qué numero estoy pensando? : 4
No has acertado
¿Qué numero estoy pensando? : 5
Has acertado!!
Has acertado 1 veces y has fallado 1 veces. Eran solución: 6, 5
Quieres probar otra vez ? (S/N): N
Adiós


Codigo de la clase AdivinarNumero

Código: [Seleccionar]
import java.util.Scanner;
import java.util.Random;
/**
 * Write a description of class AdivinarNumero here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class AdivinarNumero
{
    public static String entradaUsuario="";
    public static Scanner entrada=new Scanner(System.in);

    public static void main(String arg[ ]) {
        String separador = new String(new char[63]).replace("\0", "*");
        boolean fin=true;
        int numeroInicio=0,numeroFin=0,numeroIntentos=0, numeroUsuario=0;

        Random rnd = new Random();
        do{
            int aciertos=0,fallos=0;
            String solucion="",introducidos="";
            System.out.print("\t\t\t"+separador+
                "\n\t\t\t*** Ejercicio CU00908C Java avanzado aprenderaprogramar.com ***\n"+
                "\t\t\t***\t\t JUEGO ADIVINAR UN NUMERO \t\t    ***\n"+
                "\t\t\t*** Debe de introducir el numero inicial, el numero final   ***\n"+
                "\t\t\t*** y el numero a adivinar                                  ***\n"+
                "\t\t\t"+separador+"\n\n");
            System.out.print("\t\t\t\tIntroduzca numero inicial del rango: ");
            numeroInicio=Integer.parseInt(validarNumero());
            System.out.print("\t\t\t\tIntroduzca numero final del rango: ");
            numeroFin=Integer.parseInt(validarNumero());
            System.out.print("\t\t\t\tIntroduzca el numero de intentos: ");
            numeroIntentos=Integer.parseInt(validarNumero());
            System.out.print("\n\t\t\t\tEL NUMERO A ADIVINAR ESTA ENTRE "+numeroInicio+" Y "+(numeroInicio+numeroFin-1)+"\n");
            int i=1;
            while(i<=numeroIntentos){
                int numeroAleatorio=(int)(rnd.nextDouble() * numeroFin+numeroInicio );
                System.out.print("\t\tIntento numero: "+i+" ¿Que numero piensa usted que es?: ");
                numeroUsuario=Integer.parseInt(validarNumero());
                solucion=solucion+numeroAleatorio+",";
                introducidos=introducidos+numeroUsuario+",";
                if(numeroUsuario!=numeroAleatorio){
                    System.out.print("\t\t No!!!!! Ha fallado\n");
                    fallos=fallos+1;
                }
                else{
                    System.out.print("\t\tSi!!!!! Ha acertado\n");
                    aciertos=aciertos+1;}
                i++;
            }
            System.out.print("\n\t\t Ha acertado "+aciertos+" veces\n"+
                "\t\t Ha fallado "+fallos+" veces.\n\n"+
                "\t\t Los numeros introducidos son "+introducidos+
                "\n\t\t Los numeros a adivinar eran  "+solucion);
            System.out.print("\n\n\t\t¡¡ PULSE INTRO PARA CONTINUAR !!\n\n\t\tCualquier otra + intro FINALIZAR\n\n");
            entradaUsuario=entrada.nextLine();
            System.out.print('\u000C');
            fin=entradaUsuario.equals("");
        }while(fin);
System.out.print("\n\n\n\n\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n\t\t\t\t\t\tADIOS"+"\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n");
    }//Fin main
    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (isNumeric(entradaUsuario) == true) {
                ok=true;
            }
            else{
               
                System.out.print("Solo se admiten numeros\n");
                entradaUsuario="";
            }

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }
}

Gracias  ;)

11
Hola dejo el ejercicio Java  CU00907C del tutorial de programación Java desde cero. Redondear a 2 o más decimales. Errores precisión. BigDecimal, RoundingMode, BigInteger ().

Citar
EJERCICIO

Crea un programa para el cálculo del importe final a partir del importe inicial y un porcentaje de impuestos. El importe inicial y el porcentaje de impuestos deben solicitarse al usuario. El programa debe mostrar el resultado ateniéndose a estas reglas: debe mostrarse el impuesto como resultado de calcular el importe inicial por el porcentaje dividido entre 100, con precisión de dos decimales y redondeo al entero más próximo o en caso de equidistancia, redondeo al entero mayor. Debe mostrarse el importe final como resultado de sumar el importe inicial con el impuesto, por tanto tendrá precisión de dos decimales.
Ejemplo de resultados a obtener:
Por favor introduzca el importe inicial: 0.70
Por favor introduzca el porcentaje de impuestos: 5
El impuesto a pagar es: 0.04
El importe final es: 0.74


Codigo de la Clase CalcularImpuesto

Código: [Seleccionar]
import java.math.RoundingMode;
import java.util.Scanner;
import java.math.BigDecimal;
public class CalculoImpuesto
{
    public static Scanner entrada=new Scanner(System.in);
    public static String entradaUsuario="";
    public static double baseImponible=0.0;
    public static double porcentage=0.0;
    public static void main(String arg[ ]) {
         boolean fin=true;
         
        Scanner entrada=new Scanner(System.in);
        do{
        System.out.print("Por favor introduzca la base imponible: :");
        baseImponible=Double.parseDouble(validarNumero());
        System.out.print("Por favor introduzca el porcentage a aplicar: ");
        porcentage=Double.parseDouble(validarNumero());
        // Antes de aplicar el redondeo
        double imp=(baseImponible*porcentage)/100;
        double total=imp+baseImponible;
         System.out.print("\nAntes de redondeo\n\nBase imponible: "+baseImponible+
            "\nPorcentage a aplicar: "+porcentage+
            "\nTotal Impuesto: "+imp +
            "\nTotal a pagar: "+total );
       //Despues del redondeo
       BigDecimal impuesto=BigDecimal.valueOf((baseImponible*porcentage)/100);
       impuesto=impuesto.setScale(2,RoundingMode.UP);
       BigDecimal totalAPagar=BigDecimal.valueOf(((baseImponible*porcentage)/100)+baseImponible);
       totalAPagar=totalAPagar.setScale(2,RoundingMode.UP);
        System.out.print("\n\n\nDespues de redondeo\n\nBase imponible: "+baseImponible+
            "\nPorcentage a aplicar: "+porcentage+
            "\nTotal Impuesto: "+impuesto+
            "\nTotal a pagar: "+totalAPagar);
            entradaUsuario=entrada.nextLine();
            System.out.print('\u000C');
            fin=entradaUsuario.equals("");
        }while(fin);
    }//Fin del main


    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
              if (isNumeric(entradaUsuario) == true) {
                    ok=true;
                }
                else{
                    System.out.print('\u000C');
                    System.out.print("Solo se admiten numeros\n");
                    entradaUsuario="";
                }

             

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }
}

Gracias un saludo ;)

12
Hola dejo el ejercicio del tutorial pdf de Java avanzado CU00906C Clase Math api Java. Funciones matemáticas (trigonométricas, log, etc.) Redondeo round, floor, ceil

Citar
EJERCICIO

Supón que un partido de fútbol tiene una duración de 90 minutos. El minuto 1 se considera que abarca desde los 0 segundos hasta los 59 segundos. El minuto 2 abarca desde los 60 segundos hasta los 119 segundos. Así sucesivamente hasta el último minuto, que es el minuto 90 y abarca desde los 5340 segundos hasta los 5400 segundos. Crea un programa que pida al usuario el número de segundos transcurridos y mediante el uso de alguna función de redondeo (floor, ceil ó round) de la clase Math muestre el minuto en que nos encontramos. El programa debe pedir valores de segundos hasta que el usuario decida terminar.
Ejemplo de ejecución.
introduzca valor de segundos: 32
El minuto es el 1
¿Otro valor (s/n)? s
Introduzca valor de segundos: 2595
El minuto es el 44
¿Otro valor (s/n)? n
 

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

public class Redondeo
{
    public static String entradaUsuario="";
    public static void main(String arg[ ]) {
        double segundos=0.0;
        boolean fin=true;
        int minutos=0;
        Scanner entrada=new Scanner(System.in);
        do{
             System.out.print("Introduzca un valor en segundos: ");
            segundos=Double.valueOf (validarNumero(entrada));
            if(segundos <0 || segundos>5400){
                System.out.print("introduzca un numero entre 0 y 5400\n");

            }
            else{
                minutos=((int)Math.ceil(segundos)/60)+1;
                if(minutos>90){minutos=90;}
                 System.out.print("Estamos en el minuto: "+minutos+"\n\n");
            };
            System.out.print("PULSE INTRO PARA CONTINUAR !!!\n( Cualquier otra tecla mas intro Finalizar)");
            entradaUsuario=entrada.nextLine();
            System.out.print('\u000C');
            fin=entradaUsuario.equals("");
        }while(fin);
    }
    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(Scanner entrada){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (entradaUsuario.length()<=8){
                if (isNumeric(entradaUsuario) == true) {
                    ok=true;
                }
                else{
                    System.out.print('\u000C');
                    System.out.print("Solo se admiten numeros\n");
                    entradaUsuario="";
                }

            }else{
                System.out.print('\u000C');
                System.out.print("Y el DNI no debe de exceder de 8 digitos");
                entradaUsuario="";
            }

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }
}
Gracias ;)

13
Hola. Estoy buscando en los foros la forma de implementar un algoritmo para hallar la letra del NIF y en todos me encuentro ( incluido aprederaprogramar.com) con una solución muy sencilla y es esta:
Se introduce un numero y se halla el resto de este numero y según lo que da el resto se coge una letra u otra.

Por ejemplo : 25403790 el resto es 14 por lo tanto la letra sera Z.
Posición   0   1   2   3  4   5   6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22
Letra       T   R  W  A  G   M  Y  F  P   D   X    B   N    J    Z    S   Q    V   H    L    C    K   E

Hasta aquí estoy totalmente de acuerdo con esto y con el funcionamiento ya que es correcto.

Pero la pregunta que me hago yo y que me hice en mis tiempos cuando aprendía programación en basic en los albores del primer windows, cuando todo se programaba por consola y aun no existían entornos gráficos y que solucione pero no recuerdo es:

¿Que algoritmo se utiliza para ordenar estas letras? ya que estos números no coinciden con el código ASCCI correspondiente al carácter que representa y  no pueden tener un orden aleatorio.

Orden Numerico   Orden Alfabetico   Codigo ASCII
   T0      A3      A>> 65
   R1      B11      B>> 66
   W2      C20      C>> 67
   A3      D9      D>> 68
   G4      E22      E>> 69
   M5      F7      F>> 70
   Y6      G4      G>> 71
   F7      H18      H>> 72
   P8      J13      J>> 74
   D9      K21      K>> 75
   X10      L19      L>> 76
   B11      M5      M>> 77
   N12      N12      N>> 78
   J13      P8      P>> 80
   Z14      Q16      Q>> 81
   S15      R1      R>> 82
   Q16      S15      S>> 83
   V17      T0      T>> 84
   H18      V17      V>> 86
   L19      W2      W>> 87
   C20      X10      X>> 88
   K21      Y6      Y>> 89
   E22      Z14      Z>> 90
Una manita porfi. :D

14
Hola Dejo una posible solución al ejercicio CU00905C del curso online de programación Java nivel avanzado. Arrays (arreglos) multidimensionales en Java. Declaración y uso. 

Citar
EJERCICIO

Crea un programa que pida por pantalla cuatro países y a continuación tres ciudades de cada uno de estos países. Los nombres de ciudades deben almacenarse en un array multidimensional cuyo primer índice sea el número asignado a cada país y el segundo índice el número asignado a cada ciudad.

Ejemplo de resultados que debe mostrar el programa:
País: Argentina              Ciudades:          Buenos Aires       Cordoba         La Plata
País: España                  Ciudades:         Madrid                 Lugo              Sevilla
País: Francia                  Ciudades:         Paris                    Niza                Lyon
País: Italia                     Ciudades:         Roma                  Napoles         Sicilia

Mi solucion:
Codigo del ejercicio CU00905C clase PaisesYCiudades


Código: [Seleccionar]
import java.util.Scanner;
public class PaisesYCiudades {

    public static void main(String arg[ ]) {
        Scanner entrada=new Scanner(System.in);
        String entradaUsuario="";
        int pais=4,ciudad =4;
        String[][] paisCiudades=new String[pais][ciudad];
        int i=0;//Indice para los paises

        do{
            int z=1;//Indice para las ciudades se comienza en el indice n,1 porque el indice n,0 es el de los paises
            System.out.print("Entre el nombre de un pais: ");
            entradaUsuario=entrada.nextLine();
            paisCiudades[i][0]=entradaUsuario;
             
            do{
                System.out.print("Entre el nombre de una ciudad de "+paisCiudades[i][0]+": ");
                entradaUsuario=entrada.nextLine();
                paisCiudades[i][z]=entradaUsuario;
                z++;// Se incrementa el indice de la ciudad
            }while(z<ciudad);
             System.out.print('\u000C');
            i++;//Incremeto del indice del Pais

        }while(i<pais);
        //Presentar paises y cuidades en pantalla
        i=0;
         System.out.print('\u000C');
        do{
            int z=1;//Indice para las ciudades se comienza en el indice n,1 porque el indice n,0 es de el de los paises
            System.out.print("Pais: "+paisCiudades[i][0]+"\tCiudades :\t");
            do{
                System.out.print(paisCiudades[i][z]+"\t");
                z++;
            }while(z<ciudad);
            System.out.print("\n");
            i++;//Incremeto del indice del Pais

        }while(i<pais);
    }//Fin del main

}//Fin de la Clase

Gracias ;)

15
Hola. Dejo el  ejercicio CU00904C del tutorial informático sobre java avanzado. Ejercicios ejemplos resueltos con arrays (arreglos) unidimensionales en Java. Calcular letra DNI ()

Citar
EJERCICIO

En España cada persona está identificada con un Documento Nacional de Identidad (DNI) en el que figura un número y una letra, por ejemplo 56999545W

La letra que sigue al número se calcula siguiendo la metodología que vamos a indicar. Crea un programa que calcule la letra de un DNI a partir del número de DNI que introduzca el usuario. Es decir, se debe pedir el DNI sin la letra por teclado y el programa nos devolverá el DNI completo (con la letra).

Para calcular la letra, se debe tomar el resto de dividir nuestro número de DNI entre 23. El resultado debe estar por tanto entre 0 y 22.

Crea un método obtenerLetra(int numeroDNI) donde según el resultado de la anterior fórmula busque en un array de caracteres la posición que corresponda a la letra. Esta es la tabla de caracteres:

Posición     0   1   2   3  4   5   6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22

Letra            T   R  W A  G  M  Y  F  P  D  X    B   N    J    Z    S   Q    V   H    L   C   K   E

Por ejemplo, si introducimos el  DNI 20267079, el resto de dividirlo por 23 sería 8, luego la letra sería la P, que es la que ocupa esa posicion  en la matriz de caracteres.


Codigo de la Clase CalcularLetraDNI

Código: [Seleccionar]
import java.util.Scanner;
public class CalcularLetraDNI {
    public static Scanner entrada=new Scanner(System.in);
    public static String entradaUsuario="";
    public static String letra[]={"T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"};

    public static void main(String arg[ ]) {
        int numDNI=0;
        Scanner entrada=new Scanner(System.in);
        System.out.print("Entre el numero de DNI maximo 9 digitos :");
        numDNI=Integer.parseInt(validarNumero());
        System.out.print(obtenerLetra(numDNI));
    }//Fin del main

    //Obtener letra DNI
    public static String obtenerLetra(int numDNI){
        int posicionLetra=numDNI%23; //Obtener la posición de la letra hallando el resto
        System.out.print('\u000C');//Borrar pantalla
//En vez de presentar el numero en pantalla presento una cadena para que se presenten
//en pantalla los ceros. Si se presenta un numero los ceros de la izquierda desaparecen y
 //no se presenta el numero del DNI completo
        String NIF= "El DNI con numero "+entradaUsuario+
            " tiene la letra "+letra[posicionLetra]+"\n";
        NIF=NIF+"El DNI o NIF es: "+entradaUsuario+"-"+letra[posicionLetra];
        return NIF;

    }

    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (entradaUsuario.length()<=9){
                if (isNumeric(entradaUsuario) == true) {
                    ok=true;
                }
                else{
                    System.out.print('\u000C');//Borrar pantalla
                    System.out.print("Solo se admiten numeros\n");
                    System.out.print("Y el DNI no debe de exceder de 9 digitos");
                    entradaUsuario="";
                }
            }

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }

}//Fin de la Clase

Gracias ;)

16
Hola he terminado el curso de java desde cero de aprenderaprogramar y comienzo con el curso de java avanzado. Aquí dejo el primer ejercicio del curso.

Ejercicio CU00903C Repaso arrays o arreglos unidimensionales en Java. Tipos de inicialización.


Codigo Ejercicio1 Clase ArrayDeNumeros

Código: [Seleccionar]
import java.util.Scanner;
public class ArrayDeNumeros {

       public static void main(String arg[ ]) {
           Scanner entrada=new Scanner(System.in);
            int[ ] numero = new int[4];
            for(int i=0; i<=numero.length-1;i++){
              System.out.print("Introduzca un numero entero: ");
              numero[i]=entrada.nextInt();
            }
            for(int i=0; i<=numero.length-1;i++){
            System.out.println("El array numero["+i+"] contiene el valor: "+numero[i]);
            }
           
     }

  }


Codigo Ejercicio2 Clase ArrayDeAlumnos

Código: [Seleccionar]
import java.util.Scanner;
public class ArrayDeAlumnos {
    public static Scanner entrada=new Scanner(System.in);
    public static String entradaUsuario="";
    public static void main(String arg[ ]) {
        //Entrada numero de alumnos
        int numAlumnos=0;
        Scanner entrada=new Scanner(System.in);
        System.out.print("Entre el numero de alumnos :");
        numAlumnos=Integer.parseInt(validarNumero());
        //Poner el nº de elementos en los arrays
        double[] nota = new double[numAlumnos];
        String[] nombre= new String[numAlumnos];
        String[] calificacion=new String[numAlumnos];
        int i=0;
        //Entrada de datos
        do{
            System.out.print("Entre el nombre del alumno nº: "+(i+1)+" ");
            nombre[i]=entrada.nextLine();
            System.out.print("Entre la nota de "+nombre[i]+" alumno nº "+(i+1)+" ");
            nota[i]=Double.parseDouble(validarNumero());
            if (nota[i]<=4.99){calificacion[i]="Suspenso";}
            if(nota[i]>=5 || nota[i]==6.99){calificacion[i]="Bien";}
            if(nota[i]>=7 || nota[i]==8.99){calificacion[i]="Notable";}
            if(nota[i]>=9){calificacion[i]="Sobresaliente";}
            i++;
        }while (i<numAlumnos);
        for(i=0;i<numAlumnos;i++){
        System.out.print("El Alumno nº "+(i+1)+
                         " de Nombre "+nombre[i]+
                         " ha sacado una nota de "+nota[i]+
                         " y su calificacion es de "+calificacion[i]+"\n");
        }
    }//Fin del main

    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(){

        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (isNumeric(entradaUsuario) == true) {
                ok=true;
            }
            else{
                System.out.print("solo se admiten numeros");
                entradaUsuario="";
            }
        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }

}//Fin de la Clase

Gracias.

17
Hola Dejo el Ejercicio CU00697B del programa formativo en programación orientada a objetos. Para qué sirven las interfaces Java. Implementar una interfaz del API. 

Citar
EJERCICIO

Se plantea desarrollar un programa Java que permita representar la siguiente situación. Una instalación deportiva es un recinto delimitado donde se practican deportes, en Java interesa disponer de un método int getTipoDeInstalacion(). Un edificio es una construcción cubierta y en Java interesa disponer de un método double getSuperficieEdificio(). Un polideportivo es al mismo tiempo una instalación deportiva y un edificio; en Java interesa conocer la superficie que tiene y el nombre que tiene. Un edificio de oficinas es un edificio; en Java interesa conocer el número de oficinas que tiene.

Definir dos interfaces y una clase que implemente ambas interfaces para representar la situación anterior. En una clase test con el método main, crear un ArrayList que contenga tres polideportivos y dos edificios de oficinas y utilizando un iterator, recorrer la colección y mostrar los atributos de cada elemento. ¿Entre qué clases existe una relación que se asemeja a la herencia múltiple?
Solamente se da la situación de herencia múltiple en la Clase Polideportivo entre esta y las interfaces InstalacionDeportiva y Edificio

Codigo interface InstalacionDeportiva
Código: [Seleccionar]
public interface InstalacionDeportiva  {
   
   int getTipoDeInstalacion();
}

Codigo interface  Edificio
Código: [Seleccionar]
public interface Edificio
{
      double getSuperficieEdificio();
     
}


Codigo Clase Oficinas
Código: [Seleccionar]
public class Oficinas implements Edificio

{
    double superficie;
    int numeroOficinas;
     String separador = new String(new char[95]).replace("\0", "*")+"\n";
     
    //Constructores
    public Oficinas()
    {
        superficie=0;
        numeroOficinas=0;
    }

     public Oficinas(double superficie, int numeroOficinas)
    {
        this.superficie=superficie;
        this.numeroOficinas=numeroOficinas;
    }
    public double getSuperficieEdificio(){
        return superficie;
    }

    public int getNumeroOficinas(){
        return numeroOficinas;
    }
   
    public void setSuperficieEdificio(double superficie){
         this.superficie=superficie;
    }

    public void setNumeroOficinas(int numeroOficinas){
        this.numeroOficinas=numeroOficinas;
    }
     public String toString(){
    return "El edificio de oficinas tiene "+superficie+" m2."+
            " y un total de "+numeroOficinas+" oficinas\n"+separador ;
   
    }
}

Clase Polideportivo
Código: [Seleccionar]
public class Polideportivo implements InstalacionDeportiva,Edificio
{
    //Instancia de variables
    double superficie  ;
    int tipoInstalacion;
    String nombreInstalacion;
     String separador = new String(new char[95]).replace("\0", "*")+"\n";
    //Constructores
    public Polideportivo()
    {
        superficie =0 ;
        tipoInstalacion=0;
        nombreInstalacion=" ";
    }

    public Polideportivo(double superficie,int tipoInstalacion,String nombreInstalacion)
    {
        this.superficie=superficie;
        this.tipoInstalacion=tipoInstalacion;
        this.nombreInstalacion=nombreInstalacion;

    }

    public double getSuperficieEdificio(){
        return superficie;
    }

    public int getTipoDeInstalacion(){
        return tipoInstalacion;
    }

    public String getNombreIstalacion(){
        return nombreInstalacion;
    }

    public void setSuperficieEdificio(double superficie){
        this.superficie=superficie;
    }

    public void setTipoDeInstalacion(int tipoInstalacion){
         this.tipoInstalacion=tipoInstalacion;
    }

    public void setNombreIstalacion(String nombreInstalacion){
        this.nombreInstalacion=nombreInstalacion;
    }
   
    public String toString(){
    return "Polideportivo tipo: "+tipoInstalacion+
            "\nNombre: "+nombreInstalacion+
            "\nTiene una superficie de : "+superficie+"m2\n"+separador ;
   
    }
   
}

Codigo Clase   TestHerenciaMultipleInterface
Código: [Seleccionar]
import java.util.Iterator;
import java.util.ArrayList;
public class TestHerenciaMultipleInterface
{
    public static void main(String[] args)
    {
        ArrayList<Edificio> listaEdificios = new ArrayList<Edificio>();
        Edificio poli1= new Polideportivo(1100,1,"Akasvayu Girona- Palau Girona-Fontajau (5.040 espectadores) ");
        Edificio poli2= new Polideportivo(14900,2,"Pamesa Valencia-Pabellon Municipal Fuente San Luis (9.000 espectadores)");
        Edificio poli3= new Polideportivo(22000,3,"Unicaja Malaga-Pal. De Deportes Jose Ma Martin Carpena (10.233 espectadores) ");
       
        Edificio ofi1=new Oficinas(9.476,500);
        Edificio ofi2=new Oficinas(3200,200);
       
       
        listaEdificios.add(poli1);
        listaEdificios.add(poli2);
        listaEdificios.add(poli3);
        listaEdificios.add(ofi1);
        listaEdificios.add(ofi2);
       
        Iterator<Edificio> edif = listaEdificios.iterator();
        Edificio temp ;
        while(edif.hasNext()){
            temp=edif.next();
            System.out.println(temp.toString());
        }
    }

}


Gracias ;)

18
Hola dejo el Ejercicio CU00696B del tutorial pdf Java desde cero. Concepto de interface y herencia múltiple en Java. Implements. 

Citar
EJERCICIO

Responde a las siguientes preguntas:

a) ¿Una clase puede heredar de dos clases en Java?

No. En algunos lenguajes de programacion si se admiten la herencia multiple pero en Java no. En Java se utilizan los interface para la herencia multiple.


Citar
b) ¿Una interface Java puede tener métodos que incluyan una sentencia while?

No porque el interface no implementan codigo.
Y los metodos deben ser abstractos y aparecen sin cuerpo.


Citar
¿Una interface Java puede tener métodos que incluyan una sentencia System.out.println?

Da un error porque el interface especifica lo que se debe de hacer, pero no como hacerlo

Citar
c) ¿Un objeto Java puede ser del tipo definido por una interface?

Si. por ejemplo 1:

public interface B  {
    void metodo1();
}
class MiClase implements B
{
public  void metodo1()
    {
        System.out.println("Implementación de metodo1().");
    }
}

public class Extender
{
    public static void main(String[] args){
        MiClase mc=new MiClase();// Mi clase esta definido en interface B
        mc.metodo1();
        }
}


Citar
¿Un objeto Java puede ser al mismo tiempo del tipo definido por una interface y del tipo definido por una clase que no implementa la interface?

Si. Extendiendola a una clase que implemente la interface
Siguiendo con el ejemplo 1:
class MiClase2 extends MiClase{}


Citar
¿Un objeto Java puede ser al mismo tiempo del tipo definido por una interface y del tipo definido por una clase que implementa la interface?

Si. Extendiendola a una clase que implemente la interface e implementando a la interface.
Siguiendo con el ejemplo del ejemplo 1.2:
class Miclase3 extends MiClase implements Interface{}


Gracias. ;)

19
Hola dejo el Ejercicio del tutorial de programación java desde cero CU00695B .Clases y métodos abstractos en Java. Abstract class. Clases del api. 

Clase Presona

Código: [Seleccionar]
public class Persona { //Código de la clase Persona ejemplo aprenderaprogramar.com
    private String nombre;
    private String apellidos;
    private int edad;
    //Constructores
    public Persona() {
        nombre = "";
        apellidos = "";
        edad = 0; }
    //Constructor sobrecargado
    public Persona (String nombre, String apellidos, int edad) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
    }
    //Metodos get
    public String getNombre() { return nombre; }

    public String getApellidos() { return apellidos; }

    public int getEdad() { return edad; }
    //toString sobrecargado
    public String toString() {
        Integer datoEdad = edad;
        return "Nombre: ".concat(nombre).concat("\nApellidos: ").concat(apellidos).concat("\nEdad: ").concat(datoEdad.toString() )+"\n";
    }
} //Cierre de la clase


Clase Legislador

Código: [Seleccionar]
public abstract class  Legislador extends Persona

{
    String provinciaQueRepresenta;
    String cargoQueOcupa;
     double salario;
    public Legislador()
    {
        super();
        provinciaQueRepresenta="Desconicida";
        cargoQueOcupa="Desconicido";
        salario=0;
    }

    public Legislador(String nombre, String apellidos, int edad,String provinciaQueRepresenta,String cargoQueOcupa,double salario){
        super(nombre,apellidos,edad);
        this.provinciaQueRepresenta=provinciaQueRepresenta;
        this.cargoQueOcupa=cargoQueOcupa;
        this.salario=salario;
    }

    public String getProvinciaQueRepresenta(){
        return provinciaQueRepresenta;
    }

    public String getCargoQueOcupa(){
        return  cargoQueOcupa;
    }
    public double getSalario(){
        return  salario;
    }

    //Metodo abstracto
    abstract public String getCamaraEnQueTrabaja();

    public void setProvinciaQueRepresenta(String provinciaQueRepresenta ){
        this.provinciaQueRepresenta=provinciaQueRepresenta;
    }

    public void setCargoQueOcupa(String cargoQueOcupa){
        this.cargoQueOcupa=cargoQueOcupa;
    }
public void getSalario(double salario){
        this.salario=salario;
    }
    public String toString() {
        return super.toString()+"Provincia que representa: "+getProvinciaQueRepresenta()+
                                "\nCargo que Ocupa: "+getCargoQueOcupa()+
                                "\nSalario mensual: "+getSalario()+"\n";
    }
}


Clase Diputado

Código: [Seleccionar]
public class Diputado extends Legislador
{
    String camaraEnQueTrabaja;
    String partidoQueRepresenta;
   
    /**
     * Constructor for objects of class Diputado
     */
    public Diputado()
    {
        super();
        camaraEnQueTrabaja="Desconocida";
        partidoQueRepresenta="Desconocido";
        double salario;
    }

    public Diputado(String nombre, String apellidos, int edad,String provinciaQueRepresenta,String cargoQueOcupa,double salario,
                    String camaraEnQueTrabaja,String partidoQueRepresenta)
    {
        super(nombre,apellidos,edad,provinciaQueRepresenta,cargoQueOcupa,salario);
        this.camaraEnQueTrabaja=camaraEnQueTrabaja;
        this.partidoQueRepresenta=partidoQueRepresenta;
         
    }

    public String getCamaraEnQueTrabaja(){ return camaraEnQueTrabaja;}
    public String getPartidoQueRepresenta(){ return partidoQueRepresenta;}
     
   
    public void setCamaraEnQueTrabaja(){ this.camaraEnQueTrabaja=camaraEnQueTrabaja;}
    public void setPartidoQueRepresenta(){ this.partidoQueRepresenta=partidoQueRepresenta;}
   
   
    public String toString() {
        return super.toString()+"Camara en la que trabaja: "+getCamaraEnQueTrabaja()+
                                "\n Partido que Representa: "+getPartidoQueRepresenta() ;
    }
}


Clase Senador

Código: [Seleccionar]
public class Senador  extends Legislador
{
    // instance variables - replace the example below with your own
    String camaraEnQueTrabaja;
    double dietasDesplazamientos;
    int diasDesplazado;
    double salarioSenador;

    /**
     * Constructor for objects of class Senador
     */
    public Senador()
    {
        super();
        camaraEnQueTrabaja="Desconocida";
        dietasDesplazamientos=0;
        diasDesplazado=0;
        salarioSenador=0;

    }

    public Senador(String nombre, String apellidos, int edad,String provinciaQueRepresenta,String cargoQueOcupa,
    double salario,String camaraEnQueTrabaja,String partidoQueRepresenta,
    double dietasDesplazamientos, int diasDesplazado){
        super(nombre,apellidos,edad,provinciaQueRepresenta,cargoQueOcupa,salario);
        this.camaraEnQueTrabaja=camaraEnQueTrabaja;
        this.dietasDesplazamientos=dietasDesplazamientos;
        this.diasDesplazado=diasDesplazado;

    }
    public String getCamaraEnQueTrabaja(){ return camaraEnQueTrabaja;}
    public double getDietasDesplazamientos(){ return dietasDesplazamientos;}
    public int  getDiasDesplazado(){ return diasDesplazado;}

    public void setCamaraEnQueTrabaja(){ this.camaraEnQueTrabaja=camaraEnQueTrabaja;}

    public void setDietasDesplazamientos(){ this.dietasDesplazamientos=dietasDesplazamientos;}

    public void setDiasDesplazado(){ this.diasDesplazado=diasDesplazado;}

    public String toString() {
        return super.toString()+"Camara en la que trabaja: "+getCamaraEnQueTrabaja()+
        " \nDietas desplazamientos: "+getDietasDesplazamientos()+
        " \nDias desplazado :"+getDiasDesplazado()+
        "\nLas dietas ascienden a "+salarioTotal();
    }
public String salarioTotal(){
    double totalDietas,totalSalario;
    totalDietas=getDietasDesplazamientos()*getDiasDesplazado();
    totalSalario=totalDietas+salario;
   
  return totalDietas+"\ny el salario total es de: "+totalSalario+" euros";
}
}


Clase ListaLegisladores

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;
public class ListaLegisladores {
    private ArrayList <Legislador> listaLegisladores; //Campo de la clase
    public ListaLegisladores () {
        listaLegisladores = new ArrayList <Legislador> ();
    } //Constructor
    public void addLegislador (Legislador legislador) {
        listaLegisladores.add(legislador);
    } //Método
    public void imprimirLista() { //Método
        String tmpStr1 = ""; //String temporal que usamos como auxiliar
        String separador = new String(new char[125]).replace("\0", "*");
        System.out.println ("Se procede a mostrar los datos de los legisladores en la lista \n");
        for (Legislador tmp: listaLegisladores) {
            System.out.println (tmp.toString () );
            if (tmp instanceof Diputado) {
                tmpStr1 = "Diputado";
            } else {
                tmpStr1 = "Senador";
            }
            System.out.println("Tipo de Legislador:"+tmpStr1+"\n"+separador+"\n");
        }
    }//Cierre método imprimirListin
}


Clase TestAbstract Ejecutable

Código: [Seleccionar]
public class TestAbstract
 {
    public static void main (String [ ] Args) {
          ListaLegisladores listaLegislador = new  ListaLegisladores();
                                           
       Diputado dipu1 = new Diputado("José", "López Sanchez", 45, "Valencia","Ministro de Agricultura, Pesca y Alimentación",2500.65,"Congreso", "Partido Sinigual");
       Diputado dipu2 = new Diputado("Figueruelas", "Mascaez Ruiperez", 38, "Santander","Ministro de Asuntos Exteriores, Unión Europea y Cooperación",2500.65,"Congreso", "Partido Populismo");
       Diputado dipu3 = new Diputado("Antonio", "Del Tajo Hernandez", 42, "La Rioja","Ministro de Defensa",2500.65,"Congreso", "Partido Los Vordes");
       Diputado dipu4 = new Diputado("Francisco Paco", "Quico y Otros", 59, "Murcia","Ministro de Fomento",2500.65,"Congreso", "Partido FPQO");
       Diputado dipu5 = new Diputado("Pepe Jose", "Fernandez De Izquierdo", 63, "Barcelona","Ministro de Educacion",2500.65,"Congreso", "Partido Soccatala");
           
       Senador sena1 = new Senador ("Jose Paniza ", "Cervera Sanchez", 46, "Cuenca","Legislativo ",2300.56, "Senado","Partido Tragapanes ",55.66,112);     
       Senador sena2 = new Senador ("Miguel ", "Exposito Ploron", 54, "Teruel","Presupuestario ",2300.5, "Senado","Partido Sacamantecas",55.66,15);     
       Senador sena3 = new Senador ("Antonio", "del Rio Secanillo", 72, "Jerez","Autorizacion de tratados internacinales ",2300.25, "Senado","Partido Chupacharcos ",55.66,22);     
       Senador sena4 = new Senador ("Fernando", "Timoteo del Corral", 56, "Sevilla","Control e impulso politico",2300.356, "Senado","Partido Nodejonigota",55.66,2);     
       Senador sena5 = new Senador ("Roberto ", "Peligarto de Primi", 39, "Albacete","Integracion territorial ",2300.57, "Senado","Partido Caigquiencaiga",55.66,27);     
       
       
        listaLegislador.addLegislador (dipu1);listaLegislador.addLegislador (sena1);listaLegislador.addLegislador (sena2);
        listaLegislador.addLegislador (sena3);listaLegislador.addLegislador (dipu2);listaLegislador.addLegislador (dipu3);
        listaLegislador.addLegislador (dipu4); listaLegislador.addLegislador (sena4);listaLegislador.addLegislador (sena5);
        listaLegislador.addLegislador (dipu5);
        listaLegislador.imprimirLista();
       
    }  }   //Cierre del main y cierre de la clase

Gracias ;)

20
Hola dejo el ejercicio CU00694B del tutorial básico de POO. Sobreescribir métodos toString y equals en Java. Comparar objetos. ().

Citar
EJERCICIO

Define una clase Figura de la que hereden otras dos clases denominadas Cuadrado y Círculo. La clase figura debe tener al menos el campo dimensionPrincipal. Las clases Cuadrado y Círculo deben tener al menos un método calcularArea que permita calcular el área a partir de la dimensión principal, utilizando la fórmula matemática correspondiente. Además, sobreescribe el método equals para que dos cuadrados sean iguales si tienen igual dimensión principal, y dos círculos idem. A continuación crea un programa test donde crees varios círculos y cuadrados y hagas comprobaciones de igualdad usando el método equals.


Clase Figura

Código: [Seleccionar]
public class Figura
{
    double dimensionPrincipal;

    /**
     * Constructor for objects of class Figura
     */
    public Figura(double dimensionPrincipal)
    {
        this.dimensionPrincipal=dimensionPrincipal;
    }

    public void setDimensionPrincipal(double dimensionPrincipal){
        this.dimensionPrincipal=dimensionPrincipal;
    }

    public double getDimensionPrincipal(){
        return dimensionPrincipal;
    }
   
   
    public boolean equals (Object obj){
        Figura tmpFigura=(Figura) obj;
        if (this.dimensionPrincipal==tmpFigura.dimensionPrincipal){
            return true;
        }
        else {return false;}
    }
}


Clase Circulo

Código: [Seleccionar]
public class Circulo extends Figura
{

    /**
     * Constructor for objects of class Circulo
     */
    public Circulo(double dimensionPrincipal)
    {
        super(dimensionPrincipal);

    }
    // Metodo para calcular el area del circulo
    public double calcularArea(){
        //Area del circulo area= pi * radio al cuadrado
        double area, r;
        r=super.getDimensionPrincipal();
        return area=Math.PI*Math.pow(r,2);
    }

    // Código que añadimos a la clase Circulo. Sobreescritura del método equals ejemplo aprenderaprogramar.com
         public boolean equals(Object obj){
        if (obj instanceof Circulo){
            return super.equals(obj);
        } else {
            return false;
        }
    }
}

Clase Cuadrado
Código: [Seleccionar]
public class Cuadrado extends Figura
{
     

    /**
     * Constructor for objects of class Cuadrado
     */
    public Cuadrado(double dimensionPrincipal)
    {
         super(dimensionPrincipal);
    }
 public double calcularArea(){
     //Area del cuadrado area=lado*lado
     double lado=super.getDimensionPrincipal();
     double area;
     return area=Math.pow(lado,2);
     
    }
     // Código que añadimos a la clase Circulo. Sobreescritura del método equals ejemplo aprenderaprogramar.com
    public boolean equals(Object obj){
       
        if (obj instanceof Cuadrado){
            return super.equals(obj);
        } else {
            return false;
        }
    }
   
   
}

Clase TestHerencia5
Código: [Seleccionar]
public class TestHerencia5 {

    public static void main(String[] args) {
        Cuadrado cuadrado1 = new Cuadrado(5);
        Cuadrado cuadrado2 = new Cuadrado(15);
        Cuadrado cuadrado3 = new Cuadrado(5);

        Circulo circulo1 = new Circulo(3);
        Circulo circulo2 = new Circulo(12);
        Circulo circulo3 = new Circulo(3);
        System.out.println("\n\t\t**** EJERCICIO CU00694B sobreescribir metodo toString equals java comparar objetos ****\n");

        System.out.println("El área del cuadrado1 es: "+cuadrado1.calcularArea());
        System.out.println("El área del cuadrado2 es: "+cuadrado2.calcularArea());
        System.out.println("El área del cuadrado3 es: "+cuadrado3.calcularArea()+"\n");

        System.out.println("¿Es igual el valor de cuadrado1 y cuadrado2 ? "+cuadrado1.equals(cuadrado2));
        System.out.println("¿Es igual el valor de cuadrado2 y cuadrado3 ? "+cuadrado2.equals(cuadrado3));
        System.out.println("¿Es igual el valor de cuadrado3 y el cuadrado1 ? "+cuadrado3.equals(cuadrado1));
        System.out.println("¿El cuadrado3 y el cuadrado1 son el Mismo objeto ? "+(cuadrado3==cuadrado1)+"\n");

        System.out.println("El área del círculo1 es: "+circulo1.calcularArea());
        System.out.println("El área del círculo2 es: "+circulo2.calcularArea());
        System.out.println("El área del círculo3 es: "+circulo3.calcularArea()+"\n");

        System.out.println("¿Es igual el valor de circulo1 y circulo2? "+circulo1.equals(circulo2)); 
        System.out.println("¿Es igual el valor de circulo2 y circulo3? "+circulo2.equals(circulo3)); 
        System.out.println("¿Es igual el valor de circulo3  y circulo1? "+circulo3.equals(circulo1)); 
        System.out.println("¿El círculo3 y el círculo1 son el Mismo objeto ? "+(circulo3==circulo1));

    }

}

Gracias ;)

Páginas: [1] 2 3 4 5 6 ... 8

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".