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

Páginas: 1 2 3 4 5 [6] 7
101
Muchas gracias Alex por tu corrección y por tus sugerencias !!. Paso a contarte que con el BlueJ (4.0.1) que uso pude compilar perfectamente y el resultado fue el requerido por el ejercicio. Por suerte tengo instalado el NetBeans (8.2 en Español) y en el código aparecieron indicaciones para corregir a pesar que pude compilar el codigo original y correrlo bien. Me puse a tratar de evitar esas advertencias y logré quitarlas -y de paso quité una línea que estaba de más-
Pongo el código corregido y espero que ahora funcione sin warnings
Código: [Seleccionar]
import java.util.*;
public class Polimorfismo {
    public static void main(String[] args) {
        //lista principal que contiene una lista HashSet y otra TreeSet
        ArrayList<Set> lista = new ArrayList<Set>();
        //Lista secundaria con strings
        HashSet<String> hs = new HashSet<>();
        hs.add("sol");
        hs.add("luna");
        hs.add("saturno");
        //lista secundaria con numeros
        TreeSet<Integer> ts = new TreeSet<>();
        ts.add(2);
        ts.add(8);
        ts.add(5);
        //Agrego al ArrayList las2  listas
        lista.add(hs);
        lista.add(ts);
        Iterator<Set> it = lista.iterator();
        // recorrido por la lista principal
        while(it.hasNext()){
            Set item = it.next();
            Iterator<Set> it2 = item.iterator();
            // recorrido por las listas secundarias
            while(it2.hasNext()){
                System.out.print(it2.next()+", ");
            }
        }
    }
}

102
Hola a todos !! Paso a responder las preguntas del ejercicio CU00683B del curso de fundamentos de Java desde cero. Desde ya muchas gracias. Saludos, Luis


EJERCICIO

Intenta compilar el siguiente código:

Código: [Seleccionar]
public class Test2 {
    int atributo1;
    Test (int atrib) {atributo1 = 0;}
    public static void main (String[ ] Args) {
        System.out.println ("Mensaje 1");
        System.out.println ("Atributo 1 vale" + this.getAtrib1());
    } //Cierre del main
    public int getAtrib1() {return atributo1;}
} //Cierre de la clase

¿Qué mensaje de error se obtiene? ¿Por qué se obtiene este mensaje de error? ¿Cómo podemos solucionarlo para que se ejecute lo que pretendemos?

Respuesta: (los errores se van encadenando y están indicados en rojo)
System.out.println ("Atributo 1 vale" + this.getAtrib1());
"non-static variable this cannot be referenced from static context"

quitamos el "this."
porque los métodos estáticos tiene esta limitación:"b) No pueden invocar a un método de instancia de la misma clase (lógico pues los métodos de instancia van asociados a objetos)."

------------------------------------------------------------------
System.out.println ("Atributo 1 vale" + getAtrib1());
"non-static method getAtrib1() cannot be referenced from static context"

debemos declarar static el método:
public static int getAtrib1() {return atributo1;}

porque al no existir una instancia (objeto) los métodos tienen que ser de clase o estáticos

-------------------------------------------------------------------
public static int getAtrib1() {return atributo1;}
"non-static variable atributo1 cannot be referenced from a static context "

debemos declarar static a atributo1 :
static int atributo1;

porque los métodos estáticos tiene esta limitación:"a) No pueden acceder a campos de instancia (lógico, pues los campos van asociados a objetos)."

El código corregido queda:

Código: [Seleccionar]
public class Test {
    static int atributo1;
    Test (int atrib) {atributo1 = 0;}
    public static void main (String[ ] Args) {
        System.out.println ("Mensaje 1");
        System.out.println ("Atributo 1 vale" + getAtrib1());
    } //Cierre del main
    public static int getAtrib1() {return atributo1;}
} //Cierre de la clase

103
Hola a todos !! Paso a dejar el código del ejercicio CU00682B del tutorial de fundamentos de programación con Java. Desde ya muchas gracias por la revisión del mismo. Saludos, Luis


Clase principal, metodo main

Código: [Seleccionar]
/**
 * Esta clase prueba una clase de tipo Enum realizando distintas operaciones con ella
 * @author Luis
 * @version 1.0
 */
public class TestEnumPiedra {
    public static void main (String[ ] Args) {
       System.out.println ("Un palet admite 2.27 m3 de volumen. A continuación el peso de los palets de las distintas piedras:");
        for (TipoDePiedra tmp: TipoDePiedra.values() ) {
            System.out.println (tmp.toString() + ": el palet pesa " + (2.27f*(float)tmp.getPesoEspecifico() ) + " kg");
        }
} //Cierre del main
} //Cierre de la clase


Clase enum

Código: [Seleccionar]
/**
 * Enumeration class TipoDePiedra - write a description of the enum class here
 *
 * @author Luis
 * @version 1.0
 */
public enum TipoDePiedra
{
    CALIZA(1200), MARMOL(1423.55f), PIZARRA(1325), CUARZITA(1466);
        //Campos tipo constante   
    private final float pesoEspecifico; //Peso específico de la piedra
    /**
     * Constructor. Al asignarle uno de los valores posibles a una variable del tipo enumerado el constructor asigna
        automáticamente valores de los campos
     */
    TipoDePiedra (float pesoEspecifico) {
        this.pesoEspecifico = pesoEspecifico;
    } //Cierre del constructor
    //Métodos de la clase tipo Enum
    public float getPesoEspecifico() { return pesoEspecifico; }
}

104
Hola a todos !!
Paso a dejar el codigo del ejercicio propuesto en la entrega CU00681B del curso básico de programación Java. Realmente es el ejercicio que mas me costó realizar, tuve que reescribir bastante y por poco lo dejo para después de la siguiente entrega. Busqué información y me ayudó mucho usar valueOf() y toString() para escribir un código "aceptable"  ;)

Desde ya muchas gracias a los cometarios y correcciones que habrá.

Saludos


Metodo main

Código: [Seleccionar]
/**
 * Descripción para javadoc antes de la clase. Ejemplo para tipos enumerados
 * @author Luis
 */
public class TestEnum {
    public static void main (String[ ] Args) {
        Vehiculo claseVehiculo = new Vehiculo();
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        System.out.println ("Por favor introduzca una marca (FORD, TOYOTA, SUZUKI, RENAULT, SEAT) :");
        entrada.pedirEntrada();
        String marcaVehiculo = entrada.getEntrada();
        claseVehiculo.setMarca(marcaVehiculo);
        System.out.println ("Por favor introduzca una matrícula:");
        entrada.pedirEntrada();
        String matriculaVehiculo = entrada.getEntrada();
        claseVehiculo.setMatricula(matriculaVehiculo);
        System.out.println ("El vehículo ingresado es marca "+claseVehiculo.getMarca()+" y la matrícula es "+claseVehiculo.getMatricula());
    } //Cierre del main
} //Cierre de la clase


Clase Vehiculo - uso de enum

Código: [Seleccionar]
/**
 * Descripción para javadoc antes de la clase. Clase del ejercicio aprenderaprogramar.com para tipos enumerados
 * @author Luis
 */
enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENAULT, SEAT};
public class Vehiculo {
    String matricula = "";
    MarcaDeVehiculo marca;
    public Vehiculo(String valor_matricula, String valor_marca){
        setMatricula(valor_matricula);
        setMarca(valor_marca);
    }

    public Vehiculo(){
    }

    public void setMatricula(String valor_matricula) {
        matricula = valor_matricula;
    }

    public void setMarca(String valor_marca) {
        marca = MarcaDeVehiculo.valueOf(valor_marca);
    }

    public String getMarca(){
        return marca.toString();               
    }

    public String getMatricula(){
        return matricula;
    }
} //Cierre de la clase


Clase usada para el ingreso de los datos, ya usada en ejercicios anteriores

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra
    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud
} //Cierre de la clase

105
Hola a todos !! Paso a dejar el ejercicio propuesto en la clase CU00680B del manual de programación Java como si estuviera en primero. Desde ya muchas gracias. Saludos

Luis

EJERCICIO

Crea una clase denominada miniCalculadoraEjemplo que tenga dos métodos (basados en el uso de métodos de la clase Math): un método valorAbsoluto que recibe un número de tipo double y devuelva su valor absoluto, y otro método raizCuadrada que reciba un número de tipo double y devuelva su raíz cuadrada. Documenta esta clase conforme a los estándares JavaDoc y comprueba cómo se visualiza la documentación.

Código: [Seleccionar]
import java.lang.Math; //Importamos la clase Math de la biblioteca del API Java
/**
 * @author Luis
 * @version 1.0
 * Entrega nº80 del curso "Aprender programación Java desde cero".
 */
//Clase que permite elevar un número m a otro número n y obtener un resultado
public class miniCalculadoraEjemplo {
    /**
     * El constructor es sin asignación de parametros.
     */
    public miniCalculadoraEjemplo () { //Nada que declarar
    }

    /**
     * Metodo que devuelve el valor absoluto de m
     * @param m número del tipo double
     */
    public double valorAbsoluto(double m) {
        return Math.abs(m);
    } //Cierre del método
    /**
     * Metodo que devuelve la raiz cuadrada de m
     * @param m número del tipo double POSITIVO
     */
    public double raizCuadrada(double m) {
        return Math.sqrt(m);
    }
} //Cierre de la clase

106
Hola a todos !! Paso a dejar el código del ejercicio CU00679B del taller de programación orientada a objetos con Java. Desde ya muchas gracias. Saludos

Luis

EJERCICIO

Declara un array que contenga seis booleanos que sean true, true, false, false, true, false. A continuación, crea una lista de tipo LinkedList a partir de dicho array usando la clase Arrays del api de Java.

Código: [Seleccionar]
import java.util.*;
public class TestConstructor3AL {
    public static void main (String [ ] Args) {
       Boolean [] miArray = {true, true, false, false, true, false};
       List<Boolean> miLista = new LinkedList<Boolean>();
       miLista = Arrays.asList(miArray);
       System.out.println ("Contenido del LinkedList " + miLista);
    } } //Cierre del main y de la clase

107
Hola a todos !! paso a dejar el codigo del ejercicio de la clase CU00678B del curso de programador Java desde cero. Desde ya muchas gracias. Saludos

Luis

EJERCICIO

La interface Set de Java es implementada por las clases HashSet y TreeSet. Busca información sobre estas clases en la documentación del api Java. Crea un programa Java que haga lo siguiente:

a) Declarar un ArrayList de objetos de tipo Set.

b) Crear un objeto de tipo HashSet para contener Strings y haz que contenga las cadenas “sol”, “luna”, “saturno”.

c) Crear un objeto TreeSet para contener Integers y haz que contenga los números 2, 8, 5.

d) Añade los objetos HashSet y TreeSet como elementos del ArrayList.

e) Usa iteradores para recorrer los elementos del ArrayList y recorrer el contenido de cada uno de los elementos y mostrar este contenido por pantalla. Por pantalla deberás obtener “sol”, “luna”, “saturno”, 8, 5, 2.


Rta: Aclararo que estas dos clases tienen distintos comportamientos. HashSet muestra los elementos sin un orden determinado y TreeSet los muestra ordenados. El punto e) que pide que se muestre por pantalla las dos listas tenemos la dificultad que "sol","luna" y "saturno" quizás se muestren en ese orden pero es imposible que cuando les toque a los nros lo hagan en ese orden, ya que el orden será: 2, 5 y 8.

Código: [Seleccionar]
import java.util.*;
public class Polimorfismo {
    public static void main(String[] args) {
        //lista principal que contiene una lista HashSet y otra TreeSet
        ArrayList<Set> lista = new ArrayList<Set>();
        //Lista secundaria con strings
        HashSet<String> hs = new HashSet<String>();
        hs.add("sol");
        hs.add("luna");
        hs.add("saturno");
        //lista secundaria con numeros
        TreeSet<Integer> ts = new TreeSet<Integer>();
        ts.add(2);
        ts.add(8);
        ts.add(5);
        //Agrego al ArrayList las2  listas
        lista.add(hs);
        lista.add(ts);
       
        Set item = null;
        Iterator<Set> it = lista.iterator();
        // recorrido por la lista principal
        while(it.hasNext()){
            item = it.next();
            Iterator<Set> it2 = item.iterator();
            int i=0;
            // recorrico por las listas secundarias
            while(it2.hasNext()){
                System.out.print(it2.next()+", ");
            }
        }
    }
}
 

108
Hola a todos !! paso a dejar las respuesta del ejercicio CU00677B del taller de programación orientada a objetos con Java y entorno de aprendizaje BlueJ. Desde ya muchas gracias.

Saludos, Luis

EJERCICIO

Busca información en la documentación oficial de Java sobre la interface Iterable.
¿Qué clases de las que conoces implementan esta interface?

La interfaz vista hasta el momento es: ArrayList. También vimos: Collection, List, Set, Queue (subinterfaces).

¿Qué método han de tener disponible las clases que implementan esta interface?

Los metodos disponibles son: forEach, iterator(), spliterator()

¿Para qué sirve este método?

Para recorrer una colección.

109
Hola a todos !! Dejo el ejercicio propuesto de la clase CU00676B del curso básico de programación Java desde cero con entorno de aprendizaje BlueJ. Desde ya muchas gracias.

Saludos, Luis.

El ejercicio es : Escribe un fragmento de código utilizando esta signatura del método fill y comprueba sus resultados.

 static void fill (int[ ] a, int fromIndex, int toIndex, int val)
 Asigna el valor entero especificado a cada elemento del rango indicado para el array especificado.

El código responde a lo siguiente: en un array de 10 numeros enteros se reemplazan desde la posición 4 hasta la posición 5(sin incluír) por el número 3, y desde la posición 7 hasta la 9(sin incluír) por el número 4.

Código: [Seleccionar]
import java.util.Arrays;
public class TestMetodoFillArrays {
    public static void main (String [ ] Args) {   //main cuerpo del programa ejemplo aprenderaprogramar.com
        int [ ] miArray = new int[10];
        int i = 0;
          Arrays.fill(miArray, 2, 5, 3);
          Arrays.fill(miArray, 7, 9, 4);
        for (int tmp: miArray) {  System.out.println("miArray["+i+"]="+tmp);
        i++;  }    //Recorrido del array con un for each   
    } } //Cierre del main y de la clase
El resultado es:
miArray[0]=0
miArray[1]=0
miArray[2]=3
miArray[3]=3
miArray[4]=3
miArray[5]=0
miArray[6]=0
miArray[7]=4
miArray[8]=4
miArray[9]=0

110
Hola a todos !! paso a responder las preguntas y dejar el código del ejercicio CU00675B del taller de programación Java con entorno de aprendizaje BlueJ. Desde ya muchas gracias.

Saludos, Luis

EJERCICIO
Crea un programa Java donde declares un array de enteros tipo int miArray1 cuyo contenido inicial sea {2, -4, 3, -7}. Muestra su contenido por pantalla. Copia el contenido de este array a un ArrayList denominado lista1 y muestra su contenido por pantalla.


¿Qué tipo de datos almacena el array?


Son numeros enteros (tipo primitivo int)
 

¿Qué tipo de datos almacena el ArrayList?

son objetos del tipo Integer

Código: [Seleccionar]
import java.util.ArrayList;
//Test de copia de arrays aprenderaprogramar.com
public class Pasa_array_a_ArrayList {
    public static void main (String [ ] Args) {
        int [ ] miArray1 = {2, -4, 3, -7};
        Integer miEntero = 0;
        int tmpItem = 0;
        System.out.println("muestro un array formado por numeros del tipo int");
        for (int i=0; i<miArray1.length; i++) {
            System.out.print ("miArray1[" + i +"]= " + miArray1[i]+"; ");
        }
        System.out.println("");
        System.out.println("");
        System.out.println("muestro un ArrayList formado por objetos del tipo Integer");
        ArrayList<Integer> lista1 = new ArrayList<Integer>();
                // paso los numeros de un array (del tipo int) a objetos del tipo Integer y lo almaceno en un ArrayList
        for (int i=0; i<miArray1.length; i++) {
            tmpItem = miArray1[i];
            miEntero = miEntero.valueOf(tmpItem);
            lista1.add(miEntero);
        }
        for (int i=0; i<lista1.size(); i++) {
            System.out.print ("lista1(" + i +")= " + lista1.get(i)+"; ");
        }
    } //Cierre del main
} //Cierre de la clase

111
Hola a todos !! Paso a dejar el código del ejercicio correspondiente a la entrega CU00673B del curso práctico de programación Java con entorno de aprendizaje BlueJ.

A continuación pego el enunciado del ejercicio y la solución propuesta por mi. Desde ya muchas gracias. Saludos, Luis

EJERCICIO

Define una clase Java denominada Circulo que tenga como atributo de clase (estático) y constante numeroPi, siendo esta constante de tipo double y valor 3.1416. Además la clase tendrá el atributo radio (tipo double) que representa el radio del círculo, y los métodos para obtener y establecer los atributos. También debe disponer de un método para calcular el área del círculo (método tipo funcion areaCirculo que devuelve el área) y la longitud del círculo (método tipo función que devuelve la longitud). En una clase con el método main, declara el código que cree un objeto círculo, le pida al usuario el radio y le devuelva el área y la longitud del círculo.

¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?

Primero respondo a la pregunta. No se puede hacer si declaramos al numero PI como "final". Ejemplo: static final numeroPI = 3.1416 al comienzo de la clase Circulo
Si quitaramos "final" es posible crear un método para ingresar el numero PI (aún si está definida como static) pero NO es conveniente porque se podría modificar el valor de PI y dejaría de ser una constante


Clase main donde solicita el valor del radio y muestra el área y el perimetro

Código: [Seleccionar]
// clase test para calculo del perimetro y del área de un circulo
public class Test2 {
    public static void main (String [ ] args) {
        String sradio = "";
        double area = 0;
        double perimetro = 0;
        System.out.println("ingrese el valor del radio :");   
        EntradaDeTeclado entradaMain = new EntradaDeTeclado();
        Circulo calculoCirculo = new Circulo();
        entradaMain.pedirEntrada();
        sradio = entradaMain.getEntrada();
        double radio=Double.valueOf(sradio).doubleValue();
        calculoCirculo.setRadio(radio);
        area = calculoCirculo.areaCirculo();
        perimetro = calculoCirculo.perimetroCirculo();
        System.out.println("el area del circulo es :"+area);
        System.out.println("el perimetro del circulo es :"+perimetro);
    }

} //Cierre del main


Clase Circulo donde se realizan los cálculos

Código: [Seleccionar]
public class Circulo
{
    // instance variables - replace the example below with your own
    static final double numeroPI = 3.1416;
    public double radio = 0;
    public Circulo () {

    }

    public void setRadio(double vradio)
    {
        // ingreso del valor del radio del circulo
        radio = vradio;
    }   

    public double getRadio()
    {
        // consulta el valor del radio del circulo
        return radio;
    }   

    public double areaCirculo()
    {
        return numeroPI*radio*radio;
    }

    public double perimetroCirculo()
    {
        return numeroPI*2*radio;
    }
}


Por último el código de la clase para el ingreso por teclado ya utilizado en ejercicios anteriores

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    private int entradaNumero;
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        entradaNumero=0;
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public void pedirNumero (){
        Scanner entradaEscaner = new Scanner (System.in);
        entradaNumero = entradaEscaner.nextInt ();
    }
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public int getNumero() {return entradaNumero;}
   
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud

} //Cierre de la clase

112
Hola Dranxz88. El ejercio pertenece a la entrega nº72 "Generar números aleatorios en Java. Clase Random y método nextInt. Ejercicio ejemplo resuelto. (CU00672B)". El titulo lo tuve que recortar porque es demasiado largo y evité poner el nro de entrega/clase porque está indicado en las formas de escribir en el foro.
Muchas gracias por tu atención
Saludos
Luis

113
Hola a todos, paso a dejar el código del ejercicio propuesto en el tema CU00672B del curso básico de programación Java. Desde ya muchas gracias. Saludos. Luis.

Clase principal, metodo main

Código: [Seleccionar]
// Programa para adivinar un numero pseudoaleatorios aprenderaprogramar.com
public class AdivinarNumero {
    public static void main (String [ ] Args) {
        int numeroBuscado = 0;
        Integer tmpInteger = 0;
        EntradaDeTeclado entradaMain = new EntradaDeTeclado();
        char adivino = 'N';
        NumeroAleatorio numero = new NumeroAleatorio();
        numero.generarNumero();
        numeroBuscado = numero.getNumero();
        System.out.println("Trate de adivinar un número oculto de 1 a 100, ingrese un numero:");
        while (adivino =='N') {
            entradaMain.pedirEntrada();
            tmpInteger = tmpInteger.valueOf (entradaMain.getEntrada() );
            if (numeroBuscado==tmpInteger){adivino = 'S' ;} else {
            if (numeroBuscado<tmpInteger){System.out.println("No has acertado: el número es menor. Prueba otra vez");} else {System.out.println("No has acertado: el número es mayor. Prueba otra vez");}}   
        } //Cierre del while exterior
        System.out.println ("Felicitaciones, has adivinado !!!");
    }  }   //Cierre del main y de la clase

Clase que genera un numero aleatorio entre 1 y 100 (ambos inclusivos)
Código: [Seleccionar]
import java.util.Random; //Ejemplo aprenderaprogramar.com
        //Esta clase define un objeto que contienen un numero aleatorio entre 1 y 100
public class NumeroAleatorio {
    //Campos de la clase
       int numeroBuscado = 0;
       public void generarNumero(){
        Random numAleatorio;
        numAleatorio = new Random ();
        numeroBuscado = numAleatorio.nextInt(100)+1;
    }
    public int getNumero() {
        return numeroBuscado;
    } //Cierre del método
} //Cierre de la clase


clase para ingresar por el teclado - clase reutilizada

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    private int entradaNumero;
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        entradaNumero=0;
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public void pedirNumero (){
        Scanner entradaEscaner = new Scanner (System.in);
        entradaNumero = entradaEscaner.nextInt ();
    }
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public int getNumero() {return entradaNumero;}
   
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud

} //Cierre de la clase

114
Hola a todos !! les dejo la respuesta al ejercicio CU00670B del taller práctico de programación orientada a objetos con Java y BlueJ. Muchas gracias desde ya.
Saludos. Luis

El código dá error porque se trata de ejecutar una multiplicación con un string (entradaUsuario)

Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        System.out.println ("El doble del número introducido es: " + 2*entradaUsuario); 
    }
}


El código corregido sería pasar el string a (objeto)entero y luego realizar la operación de multiplicación

Código: [Seleccionar]
import javax.swing.JOptionPane;
public class ejemplo1 {
    public static void main (String[] Args) {
        Integer miInteger = 0;
        String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
        miInteger = miInteger.valueOf(entradaUsuario);
        System.out.println ("El doble del número introducido es: " + 2*miInteger); 
    }
}

115
Hola a todos, pego el codigo del ejercicio CU00669B del taller práctico de programación orientada a objetos con Java y BlueJ. Desde ya muchas gracias.

Saludos, Luis.

clase principal - método main

Código: [Seleccionar]
import java.util.*;
// Aquí el test con el método main
public class TestMeses {
    public static void main (String [ ] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        boolean acierto = false;
        String respuesta = "";
        String[ ] meses = new String [12];
        meses [0] = "enero";
        meses [1] = "febrero";
        meses [2] = "marzo";
        meses [3] = "abril";
        meses [4] = "mayo";
        meses [5] = "junio";
        meses [6] = "julio";
        meses [7] = "agosto";
        meses [8] = "setiembre";
        meses [9] = "octubre";
        meses [10] = "noviembre";
        meses [11] = "diciembre";
        String mesSecreto = meses [9];         
        do {
            System.out.println("Adivine el mes secreto. Introduzca el nombre del mes en minúsculas:");
            entrada.pedirEntrada();
            respuesta=entrada.getEntrada();
            if (respuesta.equals(mesSecreto)) { System.out.println("Has acertado !");
                acierto = true;}
        }
        while (acierto==false);
    }
} //Cierre del main


Clase para la entrada por teclado del nombre del mes - ya utilizada en otros ejercicios

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    private int entradaNumero;
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        entradaNumero=0;
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public void pedirNumero (){
        Scanner entradaEscaner = new Scanner (System.in);
        entradaNumero = entradaEscaner.nextInt ();
    }
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public int getNumero() {return entradaNumero;}
   
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud

} //Cierre de la clase

116
Hola a todos, paso a responder las preguntas del ejercicio CU00668B del curso práctico de programación Java con IDE BlueJ como editor.

¿Se puede acceder a un objeto anónimo contenido en un ArrayList?


Rta: Si, porque accedemos al contenido en un ArrayList mediante un puntero o posición.

ListaNumeros lista1 = new ListaNumeros();
lista1.añadirItem (3);

En este caso añadimos mediante autoboxing el Integer con el numero 3 pero no tiene nombre (objeto anónimo). Suponiendo que es el primer elemento que añadimos podemos acceder a la posición/índice 0 obteniendo el número 3.

--------------------------------------

¿Se puede inicializar un objeto de una clase que contiene tres atributos de tipo objeto declarando en el constructor que los atributos se inicializan mediante objetos anónimos?

 Rta: Si, por ejemplo si en el constructor colocamos...

public ClaseTest () {
atributo1 = new objeto1();
atributo2 = new objeto2();
atributo3 = new objeto3();
}
objeto1, objeto2 y objeto3  son objetos anónimos

Saludos

Luis

117
"¿Qué ocurre si borras else if(respuesta.equals("n")) {break;} else {respuesta="s";} ? Analízalo tú mismo y trata de tener claro el por qué ocurre eso"

Funciona correctamente.
Ese código lo puse para validar que la salida sea por "n" y no con cualquier otra tecla. Sacando esa parte de código el mensaje debería ser "presiona "s" para agregar datos o cualquier otra tecla para salir"
Muchas gracias !!!
Saludos
Luis

118
Hola Alex !! Muchas gracias por tus consejos. He leído los links que pusiste y son muy útiles tanto sea para dejar un ejercicio o los nombres de las clases de Java. Coincido que todo ayuda y debería tener un lenguaje mas "matématico", o sea, mas preciso y sin posibilidad de ambiguedades en la lectura.
Con respecto a:
"Una cuestión interesante para aprender cuestiones de diseño y de fondo en programación Java es ver cómo responden otros usuarios los ejercicios en los foros, y también responder a otros usuarios que van más atrasados que nosotros en el curso, y ver distintos puntos de vista que plantea cada uno, tratando de valorar las ventajas e inconvenientes de lo que se plantea".
Me gusta la idea de participar y debatir: No participapé en otros mensajes porque 1º) soy novato en Java, obvio 2º) Para no molestar y dejar que las respuestas (yo solo agregaría preguntas, ja) era exclusividad de los expertos.
Muchas gracias
Saludos
Luis

119
Hola a todos !! Paso a dejar el código del ejercicio CU00667B del manual de programación Java con entorno de aprendizaje BlueJ. Desde ya muchas gracias.

Saludos

Luis

EJERCICIO

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


Clase Test (main)

Código: [Seleccionar]
import java.util.*;
// Aquí el test con el método main ejemplo aprenderaprogramar.com
public class Test {
    public static void main (String [ ] args) {
       String nombreCantante = "";
       String nombreDisco="";
       String respuesta="";
       ListaCantantesFamosos lista = new ListaCantantesFamosos("Nombres introducidos por usuario");
       EntradaDeTeclado entrada = new EntradaDeTeclado();
       nombreCantante = "Madonna";
       nombreDisco = "All I want is you";
       lista.addLista(nombreCantante,nombreDisco);
       nombreCantante = "Jorge Negrete";
       nombreDisco = "Jalisco";
       lista.addLista(nombreCantante,nombreDisco);
       Iterator <CantanteFamoso> it=lista.iterator();
       while(it.hasNext()){
            CantanteFamoso itemLista;
            itemLista=(CantanteFamoso)it.next(); // objeto de la lista que estamos viendo
            nombreCantante = itemLista.getNombre();
            nombreDisco = itemLista.getDisco();
            System.out.println("Cantante :"+nombreCantante+"  -  Disco mas vendido: "+nombreDisco); 
        }
       do {
           System.out.println("Desea introducir los datos otro cantante (s/n)?");   
           entrada.pedirEntrada();
           respuesta=entrada.getEntrada();
           if (respuesta.equals("s")) {
               System.out.println ("Por favor introduzca el nombre cantante:");
               entrada.pedirEntrada();
               nombreCantante=entrada.getEntrada();
               System.out.println ("Por favor introduzca el nombre del disco:");
               entrada.pedirEntrada();
               nombreDisco=entrada.getEntrada();
               lista.addLista(nombreCantante,nombreDisco);
               Iterator <CantanteFamoso> it2=lista.iterator();// Agrega a la lista
               while(it2.hasNext()){
                  CantanteFamoso itemLista;
                  itemLista=(CantanteFamoso)it2.next(); // objeto de la lista que estamos viendo
                  nombreCantante = itemLista.getNombre();
                  nombreDisco = itemLista.getDisco();
                  System.out.println("Cantante :"+nombreCantante+"  -  Disco mas vendido: "+nombreDisco); 
               }
            } else if(respuesta.equals("n")) {break;} else {respuesta="s";}
          }
        while(respuesta.equals("s"));
      }
   
    } //Cierre del main


Clase ListaCantantesFamosos

Código: [Seleccionar]
//Ejemplo de uso ArrayList aprenderaprogramar.com
import java.util.*; //Los import deben ir siempre al principio antes de declarar la clase
//Esta clase representa una lista de nombres manejada con la clase ArrayList de Java
public class ListaCantantesFamosos {
    private String nombreDeLaLista; //Establecemos un atributo nombre de la lista
    private ArrayList<CantanteFamoso> listadenombres; //Declaramos un ArrayList que contiene objetos String

    public ListaCantantesFamosos (String nombre) {    //Constructor: crea una lista de nombres vacía
        nombreDeLaLista = nombre;
        listadenombres = new ArrayList<CantanteFamoso>(); //Creamos el objeto de tipo ArrayList
    } //Cierre del constructor

    public void addLista(String valor_nombre, String valor_disco) {
        CantanteFamoso cantanteFamoso = new CantanteFamoso(valor_nombre, valor_disco);
        listadenombres.add(cantanteFamoso);
    } //Cierre del método

    public int getTamanio () { return listadenombres.size(); } //Cierre del método

    public Iterator<CantanteFamoso>iterator() { return listadenombres.iterator();}
   
    public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < listadenombres.size() ) {
            listadenombres.remove(posicion); }
        else { } //else vacío. No existe nombre para la posición solicitada, no se ejecuta ninguna instrucción
    } //Cierre del método removeNombre
} //Cierre de la clase


Clase CantanteFamoso (el objeto de la lista anterior)

Código: [Seleccionar]
// Creación de la clase ListaCantantesFamosos.
 public class CantanteFamoso {   
     private String cantante;
     private String disco; // Hace alusión al disco mas vendido
     public CantanteFamoso(){ // constructor 1 - sin ingreso de datos
        cantante = "";
        disco = "";
     } // fin constructor 1
     public CantanteFamoso(String nombreCantante,String discoCantante) { // constructor 2 - con entrada de datos nombre y disco
        cantante = nombreCantante;
        disco = discoCantante;
     } // fin constructor 2
     // metodos setters
    public void setNombre(String nombreDelCantante) {
        cantante = nombreDelCantante;
    }
    public void setDisco(String nombreDelDisco) {
        disco = nombreDelDisco;
    }
    // metodos getters
    public String getDisco() {
        return disco;
    }
    public String getNombre() {
        return cantante;
    }
  }// fin de la clase


Clase para ingresar nombre del cantante y nombre del disco. Tambien sirve para ingresar "s" o "n".

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    private int entradaNumero;
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        entradaNumero=0;
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public void pedirNumero (){
        Scanner entradaEscaner = new Scanner (System.in);
        entradaNumero = entradaEscaner.nextInt ();
    }
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public int getNumero() {return entradaNumero;}
   
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud

} //Cierre de la clase

120
Hola a todos !!! paso a dejar el código del ejercicio CU00666B del curso básico de aprendizaje Java con BlueJ, con modificaciones en la clase EntradaDeTeclado. Se agregó la entrada de numeros, se anuló pedirEntrada en el constructor. Falta la captura de errores pero todavía no llegamos a ese tema en el curso.

Desde ya muchas gracias

Saludos Luis


Clase Test (main)

Código: [Seleccionar]
//Test del for extendido ejemplo aprenderaprogramar.com
public class Test {
    public ListaCantantesFamosos cantantes;
    public EntradaDeTeclado entrada;
    public static void main (String [] Args) {
       int opcion=0; 
       ListaCantantesFamosos cantantes = new ListaCantantesFamosos();
       EntradaDeTeclado entrada = new EntradaDeTeclado();
       while (opcion!=3) {
       System.out.println (" 1- agrega un cantante famoso");
       System.out.println (" 2- lista los cantantes famosos");
       System.out.println (" 3- finaliza");
       System.out.println (" Ingrese Opcion");
       entrada.pedirNumero();
       opcion = entrada.getNumero();
        switch (opcion) {
            case 1:
                System.out.println ("Ingrese un nombre de Cantante");
                entrada.pedirEntrada();
                cantantes.addNombre(entrada.getEntrada());
            break;
           
            case 2:
                cantantes.listaNombres();
            break;

            case 3:
                System.out.println ("El programa ha finalizado");
            break;
       
            default:
            break;
        } //Cierre del switch
       System.out.println ("-------------------------------");
       } // cierre del while
    }//finalizacion main
} //Cierre de la clase



Clase EntradaDeTeclado (modificada)

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    private int entradaNumero;
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        entradaNumero=0;
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public void pedirNumero (){
        Scanner entradaEscaner = new Scanner (System.in);
        entradaNumero = entradaEscaner.nextInt ();
    }
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public int getNumero() {return entradaNumero;}
   
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud

} //Cierre de la clase


Clase ListaCantantesFamosos

Código: [Seleccionar]
//Ejemplo de uso ArrayList aprenderaprogramar.com
import java.util.ArrayList; //Los import deben ir siempre al principio antes de declarar la clase
//Esta clase representa una lista de nombres manejada con la clase ArrayList de Java
public class ListaCantantesFamosos {
    private String nombreDeLaLista; //Establecemos un atributo nombre de la lista
    private ArrayList<String> listadenombres; //Declaramos un ArrayList que contiene objetos String

    public ListaCantantesFamosos() {    //Constructor: crea una lista de nombres vacía
        nombreDeLaLista = "Cantantes Famosos";
        listadenombres = new ArrayList<String>(); //Creamos el objeto de tipo ArrayList
        addNombre("Cantante famoso 1");
        addNombre("Cantante famoso 2");
        addNombre("Cantante famoso 3");
    } //Cierre del constructor

    public void addNombre (String valor_nombre) {
        listadenombres.add (valor_nombre);
    } //Cierre del método

    public String getNombre (int posicion) { //Método
        if (posicion >= 0 && posicion < listadenombres.size() ) {
            return listadenombres.get(posicion); }
        else { return "No existe nombre para la posición solicitada";}
    } //Cierre del método 

    public int getTamaño () { return listadenombres.size(); } //Cierre del método

    public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < listadenombres.size() ) {
            listadenombres.remove(posicion); }
        else { } //else vacío. No existe nombre para la posición solicitada, no se ejecuta ninguna instrucción
    } //Cierre del método removeNombre
   
    public void listaNombres () {  //Método
        int i = 0;
        System.out.println ("Los cantantes famosos son: ");
        for (String nombre:listadenombres) {System.out.println ((i+1)+".- " +getNombre(i));i++;};
    } //
} //Cierre de la clase

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

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