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

Páginas: 1 [2] 3
21
Muy clara tu explicación.

Gracias.

Saludos

23
Espero en algún momento poder ayudar yo también.

Gracias.

Un abrazo!

24

Gracias RaGa.

Valoro mucho tus devoluciones!

26
Hola RaGa!!

Tomo nota de tus observaciones, gracias.

Me gustaría hacer una consulta:

Que sucede cuando creamos el mismo objeto repetidas veces?

Por ejemplo, en el código de este ejercicio vemos en la linea 3 que estamos creando un objeto miScanner. Luego en la linea 6 volvemos a crear el mismo objeto (supongo que es el mismo ya que la variable apuntadora es del mismo tipo y tiene el mismo nombre).
Esto se repite en varios códigos de ejercicios que he hecho y no me da ningún error.
Cual es el comportamiento de java ante esta situación?

Código: [Seleccionar]
      1)  Scanner miScanner;
      2)  System.out.println("\nIngresa un mes");
      3)  miScanner = new Scanner(System.in);
      4)  while (!miScanner.nextLine().equalsIgnoreCase(mesesAnio[mesSecreto])) {
      5)     System.out.println("Incorrecto, intenta de nuevo ingresando otro mes");
      6)     miScanner = new Scanner(System.in);
      7)  }

Ademas, me dí cuenta que la linea 6 puede no estar en el código, pero no quería sacarla sin antes hacer esta consulta.

Gracias!

Saludos!

27
Hola, dejo mi solucion al ejercicio CU00670B

Citar
EJERCICIO

El API de Java proporciona herramientas para pedir datos al usuario a través de ventanas. Un ejemplo de ello es el uso de la clase JOptionPane perteneciente al paquete javax.swing.JOptionPane del API Java. El método showInputDialog permite pedir un dato al usuario y almacena su respuesta en un objeto de tipo String. Queremos crear un programa que pida al usuario un número y muestre por pantalla el doble de ese número. Para ello hemos creado este código:

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 problema que tenemos es que nos salta un mensaje de error “operator * cannot be applied to int, java.lang.String”. ¿Qué interpretación haces de este mensaje de error? ¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa?

El error se genera porque estamos intentando usar un operador en un String. Es necesario convertir el String a Integer mediante el método valueOf().

Código corregido

Código: [Seleccionar]
import javax.swing.JOptionPane;
public class EjemploValueOf {
    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); 
    }
}

Gracias!

29
Hola, dejo mi codigo para el ejercicio CU00669B

Citar
EJERCICIO

Crea una clase con el método main donde declares una variable de tipo array de Strings que contenga los doce meses del año, en minúsculas y declarados en una sola línea. A continuación declara una variable mesSecreto de tipo String, y hazla igual a un elemento del array (por ejemplo mesSecreto = mes[9]. El programa debe pedir al usuario que adivine el mes secreto y si acierta mostrar un mensaje y si no pedir que vuelva a intentar adivinar el mes secreto.

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

public class Test {

    public static void main (String[] args) {
        System.out.println("Adivina el mes secreto");
        pedirMes();
    }

    public static void pedirMes() {
        String[] mesesAño = {"enero", "febrero", "marzo", "abril", "mayo", "junio",
                "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
        Random numeroRandom = new Random();
        int mesSecreto = numeroRandom.nextInt(12); //asignamos numero aleatorio a mesSecreto
        Scanner miScanner;
        System.out.println("\nIngresa un mes");
        miScanner = new Scanner(System.in);
       
        while (!miScanner.nextLine().equalsIgnoreCase(mesesAño[mesSecreto])) {
            System.out.println("Incorrecto, intenta de nuevo ingresando otro mes");
            miScanner = new Scanner(System.in);
        }
        System.out.println("Correcto!");
        System.out.println("\nFin de programa");
    }
}

Muchas gracias!

30
Hola Alex!

Si, en el ejemplo quería mostrar como puedo agregar un objeto anónimo, lo correcto sería:

ListaNombres lista = new ListaNombres(); //lista tipo persona

lista.add(new Persona("Jose Pirez");

La segunda respuesta está mas clara ahora para mí, aunque me surge una consulta:

Podriamos hacer un constructor como el que sigue?:

Código: [Seleccionar]

public class Test {

PersonajeMaldito personajeM1, personajeM2, personajeM3; // Declaración de atributos

public Test (String uno, String dos, String tres) {
// inicialización atributos con objetos anónimos de tipo String y MaldadBipolar
personajeM1 = new PersonajeMaldito(uno,    new MaldadBipolar(dos,  tres));
personajeM2 = new PersonajeMaldito("Lady Westfalia", new MaldadBipolar("Destruye sueños", "Encierra miradas"));
personajeM3 = new PersonajeMaldito("Demon Wii",      new MaldadBipolar("Corta senderos",  "Tuerce destinos"));

// la clase PersonajeMaldito tiene dos atributos uno de tipo String y otro de tipo MaldadBipolar
// la clase MaldadBipolar tiene dos atributos de tipo String
}//cierre de clase



Gracias!!

31
Hola!

Mi código para el ejercicio CU00667B

Citar
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. Para ello usa un bucle while que dé opción a elegir al usuario).

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

public class EntradaDeTeclado {
    private String entradaTeclado;

    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        pedirEntrada(); //Llamada al método interno.
    } //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
}

Código: [Seleccionar]
public class CantanteFamoso {
   
    private String nombre;
    private String discoConMasVentas;
   
    public CantanteFamoso () { //constructor sin argumentos
        nombre = "";
        discoConMasVentas = "";
    }

    public CantanteFamoso (String nombre, String discoConMasVentas) { //constructor con argumentos
        this.nombre = nombre;
        this.discoConMasVentas = discoConMasVentas;
    }
   
    public void setCantante (String nombre) {
        this.nombre = nombre;
    }
   
    public void setDisco (String discoConMasVentas) {
        this.discoConMasVentas = discoConMasVentas;
    }
   
    public String getCantante () { return nombre; }
   
    public String getDisco () { return discoConMasVentas; }
       
}

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

public class ListaCantantesFamosos {

    ArrayList<CantanteFamoso> listaCantantesFamosos;

    public ListaCantantesFamosos () {
        listaCantantesFamosos = new ArrayList <CantanteFamoso>();
    }

    public void addCantante (CantanteFamoso cantante) {
        listaCantantesFamosos.add(cantante);
    }

    public void getLista () {
        Iterator<CantanteFamoso> listaCantantes = listaCantantesFamosos.iterator();
        CantanteFamoso tmp;
        while (listaCantantes.hasNext()) {
            tmp = listaCantantes.next();
            System.out.println("Cantante: "+tmp.getCantante()+" - Disco mas vendido : "+tmp.getDisco());
        }
    }
}

Main

Código: [Seleccionar]
public class Test {

    static ListaCantantesFamosos lista;

    public static void main (String[] args) {

        lista = new ListaCantantesFamosos();
        lista.addCantante(new CantanteFamoso ("Madonna","All I want is you"));
        lista.addCantante(new CantanteFamoso ("Jorge Negrete","Jalisco"));
        System.out.println("\nMostrando lista actual\n");
        lista.getLista();
        opcionCantante();
    }

    public static void opcionCantante () { //metodo que nos pregunta por mas cantantes

        EntradaDeTeclado respuestaUsuario, nuevaEntrada;
        CantanteFamoso cantante;

        do {
            System.out.println("\nDesea ingresar otro cantante? Y/N");
            respuestaUsuario = new EntradaDeTeclado();
            //if que contempla respuesta "Y", respuesta "N" o cualquier otra respuesta
            if(respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
                cantante = new CantanteFamoso();
                System.out.println("\nIngresa un nuevo cantante");
                nuevaEntrada = new EntradaDeTeclado();
                cantante.setCantante(nuevaEntrada.getEntrada());
                System.out.println("Ingresa el disco mas vendido de "+nuevaEntrada.getEntrada());
                nuevaEntrada = new EntradaDeTeclado();
                cantante.setDisco(nuevaEntrada.getEntrada());
                lista.addCantante(cantante);
                System.out.println("\nMostrando lista actualizada\n");
                lista.getLista();
            } else if (respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
            } else System.out.println("Por favor ingresa Y o N");
        } while (!respuestaUsuario.getEntrada().equalsIgnoreCase("n"));
        System.out.println("\nMostrando lista final\n");
        lista.getLista();
        System.out.println("\nPrograma finalizado");
    }
}

Gracias!

33
Lorenzo31, Alex Rodriguez como estan?

Se me pasó agradecer en este post lamentablemente.
Apenas veo la notificación de respuesta a mis consultas al foro entro a leerlas.
Lorenzo31, gracias por tu analisis y devolución! Gracias también Alex, por hacerme notar mi falta acá.

Saludos!

34
RaGa

Me olvidé de agradecerte esta devolución.

Saludos!

35
jajaja perfecto!

Gracias

36
Hola!,

1) Me quedo super claro!!

2) Sigo confundido, ya que la variable entradaTeclado la declaré como variable de campo, es decir fuera del constructor. Dentro de este solo la estoy inicializando, por eso mi confusion. No interpreto si la tengo que declarar fuera (como está hecho) o dentro del metodo constructor.

Actualmente está así:

Código: [Seleccionar]
public class EntradaDeTeclado {
    private String entradaTeclado;

    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        pedirEntrada(); //Llamada al método interno
    } //Cierre del constructor


Tu propuesta sería:

Código: [Seleccionar]
public class EntradaDeTeclado {
   
    public EntradaDeTeclado ()  { //Constructor
        private String entradaTeclado="";
        pedirEntrada(); //Llamada al método interno
    } //Cierre del constructor

Es correcto?

Gracias!


37
Cesar, agradezco mucho tu devolución!

Hice correcciones y me gustaría mostrarte como quedó el codigo

En ListaCantantesFamosos saqué el indice numérico ya que la consigna pide hacerlo con un for extendido
Código: [Seleccionar]
import java.util.ArrayList;

public class ListaCantantesFamosos {

    private ArrayList<String> listaCantantes;
    //constructor que inicializa el objeto listaCantantes y agrega 3 cantantes(strings)
    public ListaCantantesFamosos () {
        listaCantantes = new ArrayList<String>();
        listaCantantes.add("Bono"); listaCantantes.add("Freddie Mercury"); listaCantantes.add("Shakira");
    }
    //metodo para agregar otros strings
    public void addCantante (String nombre) { listaCantantes.add(nombre); }
    //metodo que devuelve todo el contenido del ArrayList listaCantantes
    public void getListaCompleta () {
        for (String nombre : listaCantantes) {
            System.out.println("Cantante : "+nombre);
        }
    }
}

El main modificado

Código: [Seleccionar]
public class Test {

    static ListaCantantesFamosos lista; //es estatico ya que lo vamos a inicializar y usar dentro del metodo main

    public static void main (String[] args) {

        lista = new ListaCantantesFamosos();
       
        System.out.println("\nMostrando lista Actual\n");
        lista.getListaCompleta();
        cantanteOpcional();
    }

    static void cantanteOpcional() {

        EntradaDeTeclado respuestaUsuario, ingresoCantante; //declaramos dos objetos de tipo EntradaDeTeclado

        do {
            System.out.println("\nDesea ingresar otro cantante? Y / N");
            respuestaUsuario = new EntradaDeTeclado();
            if (respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
                System.out.println("\nIngrese otro cantante");
                ingresoCantante = new EntradaDeTeclado();
                //agregando el cantante ingresado al objeto lista
                lista.addCantante(ingresoCantante.getEntrada());
                System.out.println("Cantante agregado satisfactoriamente\n");
                System.out.println("Mostrando lista actualizada\n");
                lista.getListaCompleta();

            }else if (respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
                //aca respuestaUsuario.getEntrada() es igual a "n" entonces se repite el do por la condicion del while.
                //por lo tanto este if lo dejo en blanco

            } else { //si respuesta distinta de "y" o "n" repreguntamos
                System.out.println("Por favor, ingrese Y o N");
                respuestaUsuario.setEntrada("y");
                /*cambiamos el valor por "y" para que se cumple la condición en el while siguiente
                para ejecutar la sentencia del do nuevamente.
                Para poder cambiar el valor de respuestaUsuario agregamos un metodo setEntrada en la
                clase EntradaDeTeclado*/
                }
        }// fin de do
        while (respuestaUsuario.getEntrada().equalsIgnoreCase("y"));
        System.out.println("\nMostrando lista final\n");
        lista.getListaCompleta();
        System.out.println("\nPrograma terminado");
    }
}

Muchas gracias!

38
RaGa, gracias por tu revisión y devolución.

Quiero hacer dos observaciones:

1) La clase EntradaDeTeclado es la misma que estoy usando en otros ejercicios mas avanzados del curso.

El metodo setEntrada tiene utilidad en el próximo ejercicio, o por lo menos fue mi intención en dicho código :).

Para ser mas prolijo ahora estoy usando paquetes (uno para cada ejercicio), y así no generalizar tanto algunas clases que se pueden reutilizar, como por ejemplo EntradaDeTeclado.

Me pareció una buena idea reutilizar código, pero en este caso fue un desprolijidad mía, perdón.


2) Al decir que es más correcto declarar el campo además con su tipo y con su ámbito.
A que te referis? Tengo que inicializarlo ni bien lo declaro?

Es decir:

private String entradaTeclado;  //no recomendable

private String entradaTeclado = ""; //recomendable

39
Hola! Aquí mis respuestas al ejercicio CU00668B.

Citar
EJERCICIO

Responde a las siguientes preguntas.
1) ¿Se puede acceder a un objeto anónimo contenido en un ArrayList?
2) ¿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?

Respuestas:

1) Si, si el objeto anónimo fue agregado satisfactoriamente a un ArrayList entonces podemos acceder al mismo.

Ejemplo:

ListaNombres lista = new ListaNombres();
lista.add(new Persona("Jose Pirez");
lista.add("Pedro Picapiedras"); //autoboxing

Entonces el objeto lista contendrá 2 objetos ("Pedro Picapiedras" y "Jose Pirez")

2) Esta pregunta me generó muchas dudas pero mi respuesta es No.
     
Gracias!!

Páginas: 1 [2] 3

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