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.


Mensajes - paramonso

Páginas: 1 [2] 3 4 5 6 7 ... 13
21
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  ;)

22
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 ;)

23
Hola Ogramar.

Como explico en la pregunta por allá por el 1990 -93 hice un curso de analista programador en basic (era entonces cuando el primer windows empezaba a instalarse en los pc) y solamente se trabajaba en consola y uno de los ejercicios a resolver era averiguar el algoritmo que se utilizaba para "ordenar" estas letras.

No se ordenaban, en base a unos cálculos se hallaba el numero del código ascii de la letra correspondiente a el nif y si era una de las letras que no estaba incluida (i,o,u,ñ)
se le suma uno para coger la siguiente.
Como digo en mi consulta de esto hace por lo menos venti  tantos años (al poco de que se decidieran a crear la letra del nif  ) y ya no recuerdo como se hace ( ya que por motivos personales tuve que dejarme la programación y la estoy retomando ahora).
Pero se que hay un algoritmo para implementar todo esto.

Lo que pasa que algún tiempo después se dieron cuenta que la letra del nif era algo que se tenia que utilizar a la hora de gestionar la facturación  las empresas (entre otros documentos nominas, etc..) y no podía ser un secreto ya que esta letra era necesaria para cualquier tipo de gestión en el cual hiciera falta el nif.

De hecho hoy en día aun hay veces que para hacer algunas gestiones te preguntan solamente el numero del dni, sin preguntarte por la letra y después de introducir el numero del dni te preguntan por la letra para ver si coincide con lo que les sale en el ordenador (normalmente en los bancos si no te conocen).

Fue entonces cuando alguien decidió ( implementar el algoritmo mod23 ) ordenar las letras del 0 al 22 y utilizar el mod 23.
Pero ya te digo que existía un algoritmo para poder hacer esto y hallar la letra del código ascii correspondiente a la letra del nif y me gustaría si hay alguien que recuerde esto que me hiciera memoria.

Citar
Se usan veintitrés letras por ser éste un número primo.
Se utilizan 23 letras no por ser un numero primo sino porque las demás letras están descartadas .
1 2 3 4 5 6 7 8    9 10 11  12  13      14 15 16 17 18  19 20  21 22 23
A,B,C,D,E,F,G,H,i,J, K  , L,  M,  N,ñ,o, P,  Q,  R, S, T,  u, V, W,   X, Y,   Z.
En total son 27 letras del alfabeto y se descartan 4.

I por el 1, O por el 0, U por la V y la Ñ por que en muchos países que no son de habla hispana no se utiliza.
Un saludo. ;)


24
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 ;)

25
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

26
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 ;)

27
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 ;)

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

29
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 ;)

30
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. ;)

31
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 ;)

32
Hola Mari Conchis. El ejercicio está bien resuelto. Veo que te has fijado a la hora de crear el numero aleatorio  numero=numAleatorio.nextInt(100)+1; para que el numero minimo sea 1 y no 0 y el maximo sea 1+99=100

Todo correcto un saludo ;)

33
Hola Mari conchis.

El ejercicio esta bien resuelto pero tienes un pequeño fallo en el While y en la pregunta para seguir dentro del bucle.

te comento:
Citar
String respuesta="si";
Esto esta bien.
Citar
while(respuesta.equals("si")){
Esto también esta bien.

Citar
System.out.println("¿desea introducir otro cantante (s/n)?");
        respuesta=entradaEscaner.nextLine();
Esto induce a error a la hora de seguir introduciendo cantantes ya que en la pregunta te dice s/n para continuar y si le das s finaliza.
Hay que ser coherentes en el código y en las entradas de teclado del usuario ya que nosotros codificando y haciendo pruebas sabemos lo que ponemos pero el usuario no ve el funcionamiento interno del programa.
Tenemos que ir con cuidado en estos despistes.
Seria cambiar la pregunta por: "desea introducir otro cantante (si/no)
o modificar el while :while(respuesta.equals("s") y la variable :String respuesta="s";

Todo correcto menos ese pequeño despiste ¿ok?.
Un Saludo ;)

34
Hola Mari Conchis.

El ejercicio esta bien resuelto y el bucle while responde bien.

Hay muchas formas de solucionarlo y una de ellas es como tu lo has hecho yo lo hice  de otra manera pero el resultado final es el mismo.
Te pego el código para que lo veas.
Código: [Seleccionar]
public class TestListaCantantesFamosos {
    public static void main (String [ ] args) {
        System.out.print ("EjercicioCU00666B\n\n");
        System.out.print ("Introduzca nombres de cantantes.\nPara finalizar Pulse INTRO solamente\n\n");
        System.out.print ("****************Empezamos el programa**************\n");
        String fuera;// Cadena para comparar si es espacio vacio
        boolean fin=false;// Variable booleana si es true finaliza el programa
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos("Nombres introducidos por usuario");
        System.out.println ("La lista esta formada por " + lista1.getTamaño() + " elementos");
        lista1.mostrarCantantes();
        do
        {
            System.out.println ("Por favor introduzca un nombre (INTRO PARA FINALIZAR):"); 
            EntradaDeTeclado entrada1 = new EntradaDeTeclado();
            System.out.print('\u000C');
            fuera=entrada1.getEntrada();//Variable que de cadena para sacar la entrada por teclado
            fin=fuera.substring(0,entrada1.getLongitud ()).equals("");//Si es espacio vacio para salir del bucle
            if(fin==false){ // Si es espacio vacio no se graba la ultima entrada y se sale del bucle
            lista1.addNombre (entrada1.getEntrada() );
            System.out.println ("Lista actualizada con :" + lista1.getTamaño() + " elementos\n INTRO PARA FINALIZAR");
            lista1.mostrarCantantes();
        }
       
        }while(!fin);
       
        System.out.print('\u000C');// Borrar pantalla en windows
        System.out.print ("******************* Gracias ************************\n\n");

        System.out.println ("La lista ha quedado formada por " + lista1.getTamaño() + " elementos");
        lista1.mostrarCantantes();
         System.out.print ("\n*****************FIN DEL PROGRAMA ************************");
    } //Cierre del main

} //Cierre de la clase

Un saludo ;)

35
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 ;)

36
ok. Gracias Ogramar. Me imaginaba algo de esto pero ahora al comentarlo tú ya estoy seguro. Gracias

37
Hola. Dejo el Ejercicio CU00693B del manual pdf Java desde Cero. public, private y protected Java.Tipos de modificadores de acceso. Visibilidad en clases, subclases.

Citar
EJERCICIO

Considera que estás desarrollando un programa Java donde trabajas con la superclase Profesor y la subclase ProfesorEmerito. Crea el código para estas clases que cumpla los requisitos que indicamos.

Como atributos de la superclase tendremos nombre (String), edad (int) y añosConsolidados (int) declarados como protected.

En la subclase se trabajará con el campo adicional añosEmerito declarado como private.

Un método de la subclase será double obtenerSalarioBase () que obtendrá el salario base como (925 + añosConsolidados * 33.25 + 47.80 * añosEmerito).

Intenta acceder directamente al campo añosConsolidados desde la subclase (como si fuera un campo más de la subclase) para implementar este método. ¿Es posible sin utilizar una invocación a super ni un método get? ¿Qué ocurre si el atributo en la superclase lo declaras private?


¿Es posible sin utilizar una invocación a super ni un método get?

Si. Con protected se puede acceder desde todas las clases que estén dentro del mismo paquete.


¿Qué ocurre si el atributo en la superclase lo declaras private?

Da un error cuando vas a compilar "añosConsolidados has private access in Profesor" por que al declarar un campo, variable, etc. como private solo se puede acceder desde dentro de la clase donde se declara.


Clase Profesor

Código: [Seleccionar]
public class Profesor
{
    // instance variables -
    protected String nombre;
    protected int edad;
    protected int añosConsolidados;

    /**
     * Constructores
     */

    public Profesor ()
    {
        // initialise instance variables
        nombre="";
        edad=0;
        añosConsolidados=0;
    }
    //Constructor sobrecargado
    public Profesor (String nombre,int edad,int añosConsolidados)
    {
        // initialise instance variables
        this.nombre=nombre;
        this.edad=edad;
        this.añosConsolidados=añosConsolidados;
    }
    //metodos get 
    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }

    public int getAñosConsolidados() {
        return añosConsolidados;
    }
    //metodos set
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
public void setEdad(int edad) {
        this.edad = edad;
    }
    public void setAñosConsolidados(int añosConsolidados) {
        this.añosConsolidados =añosConsolidados;
    }
    public double obtenerSalarioBase(){
        double salarioBase;
        salarioBase=925+añosConsolidados*33.25;
        return salarioBase;
    }

}

Clase ProfesorEmerito
Código: [Seleccionar]
public class ProfesorEmerito extends Profesor
{
    // instance variables -
    private int añosEmeritos;
    /**
     * Constructores
     */

   
    //Constructor sobrecargado
    public ProfesorEmerito(String nombre,int edad,int añosConsolidados,int añosEmeritos)
    {
        super(nombre,edad,añosConsolidados);
        this.añosEmeritos=añosEmeritos;
    }

    public int getAñosEmeritos() {
        return añosEmeritos;
    }
    //metodos set
    public void setAñosEmeritos(int añosEmeritos) {
        this. añosEmeritos = añosEmeritos;
    }

    public double obtenerSalarioBase(){
        double salarioBase=( salarioBase=925+añosConsolidados*33.25+(47.80 * añosEmeritos));
        return salarioBase;
       
    }
}

Clase TestProtected
Código: [Seleccionar]
public class TestProtected
{
    public static void main(String[] args){
        ProfesorEmerito profeEmerito= new ProfesorEmerito("Jose Marquez de Vicente",45,15,10);
        double salarioBaseCalculado=profeEmerito.obtenerSalarioBase();
        System.out.print("El salario Base Calculado del Profesor es de :"+salarioBaseCalculado+" Euros");
         
       
    }
}

Gracias. ;)

38
Hola. Ejercicio CU00692B del curso pdf de programación java desde cero.
Palabra clave super: invocar métodos de superclases desde subclases en Java. Ejemplo básico.

Citar
EJERCICIO

Considera que estás desarrollando un programa Java donde trabajas con la superclase Profesor y la subclase ProfesorEmerito. Crea el código para estas clases que cumpla los requisitos que indicamos.

Como atributos de la superclase tendremos nombre (String), edad (int) y añosConsolidados (int). Un método de la superclase será double obtenerSalarioBase () que obtendrá el salario base como (725 + el número de años consolidados multiplicado por 33.25).

En la subclase se trabajará con el campo adicional añosEmerito. Queremos hacer lo siguiente: sobreescribir el método obtenerSalarioBase () en la subclase para calcular el salario base del profesor emérito invocando mediante la palabra clave super al cálculo del salario base de Profesor y añadiéndole la cantidad de (47.80 * añosEmerito).


Clase Profesor
Código: [Seleccionar]
public class Profesor
{
    // instance variables -
    private String nombre;
    private int edad;
    private int añosConsolidados;

    /**
     * Constructores
     */

    public Profesor ()
    {
        // initialise instance variables
        nombre="";
        edad=0;
        añosConsolidados=0;
    }
    //Constructor sobrecargado
    public Profesor (String nombre,int edad,int añosConsolidados)
    {
        // initialise instance variables
        this.nombre=nombre;
        this.edad=edad;
        this.añosConsolidados=añosConsolidados;
    }
    //metodos get 
    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }

    public int getAñosConsolidados() {
        return añosConsolidados;
    }
    //metodos set
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
public void setEdad(int edad) {
        this.edad = edad;
    }
    public void setAñosConsolidados(int añosConsolidados) {
        this.añosConsolidados =añosConsolidados;
    }
    public double obtenerSalarioBase(){
        double salarioBase;
        salarioBase=725+añosConsolidados*33.25;
        return salarioBase;
    }

}

Clase ProfesorEmerito
Código: [Seleccionar]
public class ProfesorEmerito extends Profesor
{
    // instance variables -
    int añosEmeritos;
    /**
     * Constructores
     */

    public ProfesorEmerito()
    {
        añosEmeritos=0;

    }
    //Constructor sobrecargado
    public ProfesorEmerito(String nombre,int edad,int añosConsolidados,int añosEmeritos)
    {
        super(nombre,edad,añosConsolidados);
        this.añosEmeritos=añosEmeritos;
    }

    public int getAñosEmeritos() {
        return añosEmeritos;
    }
    //metodos set
    public void setAñosEmeritos(int añosEmeritos) {
        this. añosEmeritos = añosEmeritos;
    }

    public double obtenerSalarioBase(){
        double salarioBase=(super.obtenerSalarioBase()+(47.80 * añosEmeritos));
        return salarioBase;
       
    }
}

TestSobreescribirMetodos
Código: [Seleccionar]
public class TestSobreescribirMetodos
{
    public static void main(String[] args){
        ProfesorEmerito profeEmerito= new ProfesorEmerito("Jose Marquez de Vicente",45,15,10);
        double salarioBaseCalculado=profeEmerito.obtenerSalarioBase();
        System.out.print("El salario Base Calculado del Profesor: "+profeEmerito.getNombre()+"\n"+
        "con una Edad de :"+profeEmerito.getEdad()+" años\n"+
        "Con "+profeEmerito.getAñosConsolidados()+ " años Consolidados\n"+
        "y con "+profeEmerito.getAñosEmeritos()+" años Emeritos\n"+
        "es de :"+salarioBaseCalculado+" Euros");
   
    }
}

Graxies ;)

39
Hola. Dejo el Ejercicio CU00690B del curso pdf de programación Java.
Sobreescribir métodos en Java. Tipo estático y dinámico. Ligadura. Métodos polimórficos.

Citar
EJERCICIO

Responde a las siguientes preguntas:

Supongamos la superclase Vehiculo que representa a cualquier tipo de vehículo y la subclase Taxi que representa a un tipo de vehículo concreto.

a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?

Si.
El objeto puede apuntar a su SuperClase hiciendo Casting o conversion de tipos.
Vehiculo v=new Vehiculo.
Taxi t= new Taxi
En este caso se supone que taxi es una subclase de Vehiculo.
Se hace el Casting : t=(Taxi) v;
No se puede hacer t=v por que el objeto Vehiculo no puede heredar del objeto Taxi ya que este es una subclase de vehiculo y hereda de el.
Vehiculo al ser la superclase de taxi no puede heredar de este.
Es como si tuvieramos dos cajas una grande y otra mas pequeña, la caja grande es Vehiculo y la pequeña Taxi.
La caja grande (Vehiculo)) puede contener a Taxi pero la pequeña(Taxi) no puede contener a Vehiculo porque no cabe.

Citar
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?


   Si. Siempre que Taxi herede de Vehiculo.

Citar
c) Escribe el código de una clase Vehiculo con los atributos matricula (String) y numeroDeRuedas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un vehículo.
 

Clase Vehiculo

Código: [Seleccionar]
/**
 * Write a description of class Vehiculo here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Vehiculo
{
    private String matricula;
    private int numeroRuedas;

    /**
     * Constructor for objects of class Vehicuo
     */
    public Vehiculo(String matricula, int numeroRuedas)
    {
        this.matricula=matricula;
        this.numeroRuedas=numeroRuedas;
    }

    public String getMatricula() {
        return matricula;
    }

    public int getNumeroRuedas () {
        return numeroRuedas;
    }

    public void setMatricula(String matricula) {
        this.matricula =matricula;
    }

    public void setNumeroRuedas(int numeroRuedas) {
        this.numeroRuedas = numeroRuedas;
    }

    public String toString() {
        return  "Matricula : "+matricula +" Numero de Ruedas :"+numeroRuedas;
    }
}

Citar
d) Escribe el código de una clase Taxi que herede de vehículo y que además de los atributos de Vehiculo lleve un atributo adicional nombreDelConductor (String) y numeroDePlazas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un Taxi.

Clase Taxi
Código: [Seleccionar]
/**
 * Write a description of class Taxi here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Taxi extends Vehiculo
{
     private String nombreDelConductor;
     private int numeroDePlazas;
   
    /**
     * Constructor for objects of class Taxi
     */
    public Taxi(String matricula, int numeroRuedas,String nombreDelConductor,int numeroDePlazas)
    {
        super(matricula,numeroRuedas);
        this.nombreDelConductor=nombreDelConductor;
        this.numeroDePlazas=numeroDePlazas;
    }
   
   
    public String getnombreDelConductor() {
        return nombreDelConductor;
    }

    public int getNumeroDePlazas () {
        return numeroDePlazas;
    }
    public void setNombreDelConductor(String nombreDelConductor) {
        this.nombreDelConductor =nombreDelConductor;
    }

    public void setNumeroDePlazas(int numeroDePlazas) {
        this.numeroDePlazas = numeroDePlazas;
    }

    public String toString() {
        return   "Conductor: "+nombreDelConductor +" Numero de Plazas :"+numeroDePlazas;
    }
}

Citar
e) Escribe el código de una clase test con el método main que cree un objeto cuyo tipo es Vehiculo, instanciado como Taxi. Establece valores para sus atributos y usa el método toString().


Clase Test
Código: [Seleccionar]
/**
 * Write a description of class TestVehiculo here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class TestVehiculo
{
      public static void main (String [ ] Args) {
      Vehiculo taxi= new Taxi("25986-KBM",4,"PEPE RUIPEREZ",7);
      System.out.println(taxi.toString());
    }
}

Citar
¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi? ¿Por qué?

El de la clase Taxi ya que se ha creado el objeto instanciando a Taxi.


Si el objeto se hubiera instanciado como Vehiculo taxi=new Vehiculo("25986-KBM",4 );
Se aplicaria el metodo de la clase Vehiculo.
En el caso de que no existiera el metodo toString() en el Objeto Taxi el JVM busca en las clases superiores en tiempo de ejecucion en este caso en Vehiculo y si no estuviera seguiria subiendo hasta llegar a la SuperClase Objet y si no lo encuentra en la SuperClase Object no llega a compilar.

Gracias.
Un saludo. ;)

40
Si.
A mi también me ha pasado a veces, llego incluso a copiar y pegar el código encima de lo que tengo yo escrito, lo comparo letra por letra y es exactamente igual pero sigue dando error no se porque.

 ;)

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

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