Mostrar Mensajes

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


Temas - Dan_SB

Páginas: 1 2 3 [4] 5
61
Buenos dias!

Resuelvo el ejercicio 75° del curso con el siguiente enunciado:

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? ¿Qué tipo de datos almacena el ArrayList?

Aqui el codigo de prueba:

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

public class ListaNumeros {
    public static void main(String[]args){
        int miArray1[];
        ArrayList <Integer> Lista1 = new ArrayList<Integer>(4);
        miArray1 = new int[]{2,-4,3,-7};
        System.out.print("Elementos del array: ");
        for(int i = 0; i < miArray1.length; i++){
            System.out.print(miArray1[i] + ", ");
        }
        System.out.println(" ");
        //Copiando cadena con System.arraycopy...!
        for(int i = 0; i< miArray1.length; i++){
            Lista1.add(miArray1[i]);
        }
        //Imprimiendo Lista1.
        System.out.print("Elementos copiados al segundo array: ");
        for(int num: Lista1){
            System.out.print(num + ", ");
        }
    }       
}

Citar
¿Qué tipo de datos almacena el array?

Un array puede almacenar tipos primitivos (int, double, char, float..) y el tipo "especial" que es un objeto, los tipos String.

Citar
¿Qué tipo de datos almacena el ArrayList?

Me ocurrió algo durante la confección del código para la prueba:

Confieso que al inicio hice esto:


Y me puse a jugar...



Y como ya saben, el String es un objeto


La respuesta era usar el Integer obviamente porque usamos numeros:


Con los tipos primitivos, suelta errores, solo funciona con objetos (String, Integer)... por lo que mi conclusión seria: solo almacenan objetos.

PD: La linea amarilla que esta bajo el "new ArrayList<Integer>(4);" es un warning, que me dice que estoy redundando el asunto (como si el netbeans me dijera: hey, no hace falta que me digas de nuevo que Lista1 es Integer.)

Le hice caso a la advertencia, lo corrigio de esta manera "new ArrayList<>(4);" y funciono igual:



Creo que solo es valido escribir "new ArrayList<Integer>(4);" en constructores, aunque igual, con todo y el warning corre el programa.

Espero sus comentarios y sus correcciones, gracias!

62
Buenas noches

Vengo a resolver el ejercicio del capitulo 74° del curso, el enunciado es así:

Crea un proyecto Java con la siguiente estructura:

a) Un package denominado formas dentro del cual existan los siguientes packages: formas1dimension, formas2dimensiones y formas3dimensiones.

b) Dentro del package formas1dimension deben existir las clases Recta y Curva.

c) Dentro del package formas2dimensiones deben existir las clases Triangulo, Cuadrilatero,Elipse, Parabola e Hiperbola.

d) Dentro del package formas3dimensiones deben existir las clases Cilindro, Cono y Esfera.

Nota: crea las clases sin rellenar su código, simplemente para poder visualizar que están dentro de los packages adecuados.

Visualiza el resultado y comprueba que las clases están agrupadas de forma adecuada.


Muestro paso a paso las imagenes, desarrollado en netbeans... no se porque me gusta tanto  :P



Solo aprecien esta portada tan linda.. (Ok no), Vamos a lo que vamos!

1. Creación del proyecto Java, le pondre "APR Paquetes" .


2. Se nos crea el proyecto, ahora clic derecho y nuevo paquete.


3. Paquete Formas como se nos ha pedido.


4. Se crea el paquete Formas, hacemos el mismo procedimiento; clic derecho sobre formas y new package.



5. Cuando hayas creado el subpaquete, de una vez añade las clases de ese paquete. Asiendo esto, ya se estableceria  formas.formas1dimension por separado.

6. Añadiendo las clases...


Resultado:





Y listo!!

63
Buenas noches

Resuelvo el ejercicio del capitulo 73° del curso, el enunciado es así:

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). Busca información sobre las fórmulas necesarias para crear estos métodos en internet si no las recuerdas. 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.

Okay, aqui vamos:

Clase Cirlulo:
Código: [Seleccionar]
package APR;

public class Circulo {
    static final double numeroPi = 3.1416;
    private double radio;
   
    public Circulo(double rad){
        radio = rad;
    }
   
    public void setRadio(double rad){
        radio = rad;
    }
   
    public double getRadio(){
        return radio;
    }
   
    public double calcularAreaCirculo(){
        double area = Math.pow(radio, 2) * numeroPi;
        return area;
    }
   
    public double calcularLongitudCirculo(){
        double longitud = 2 * numeroPi * radio;
        return longitud;
    }
}

Clase main:
Código: [Seleccionar]
package APR;
import java.util.Scanner;

public class Main {
    public static void main(String[]args){
        Scanner in = new Scanner(System.in);
        double rad; boolean salir = false; int opcion;
        System.out.print("Bienvenido!! introduzca el radio del circulo: ");
        rad = in.nextDouble();
        Circulo circulo = new Circulo(rad);
        while(salir == false){
            System.out.println("Para saber el area del circulo, ingrese 1.");
            System.out.println("Para saber la longitud del circulo, ingrese 2.");
            System.out.println("Para salir, ingrese 3.");
            opcion = in.nextInt();
            switch(opcion){
                case 1:
                    System.out.println("El area del circulo es: " + circulo.calcularAreaCirculo());
                break;
                case 2:
                    System.out.println("La longitud del circulo es: " + circulo.calcularLongitudCirculo());
                break;
                case 3:
                    System.out.println("Adios!");
                    salir = true;
                break;
                default:
                    System.out.println("Caracter desconocido, intente de nuevo.");
                break;
        }
        }
    }
}

Ejecución del programa:



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

No. Porque el static no se puede declarar en un método. Solo cabecera. Lo unico valido es el final.

Código: [Seleccionar]
public void setNumeroPi(double pi){
        final double numeropi = pi;
    }

Saludos

64
Buenas tardes!!!

Vengo a resolver el ejercicio del capitulo 72° del curso, el enunciado es así:

Crea un programa Java que permita “jugar a adivinar un número” como se expone a continuación. El programa debe iniciarse indicando “Se ha generado un número aletatorio entero entre 1 y 100, intente adivinarlo”. El usuario introducirá un número y si el número aleatorio generado por el ordenador es menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es mayor”. El programa terminará cuando el usuario introduzca el número aleatorio que había escogido el ordenador.

Aquí presento mi versión, el código:

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

public class NumeroAzar {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int aleatorio = new Random().nextInt(100), num = 0, intentos = 0;
        System.out.println("Bienvenido! adivina el numero del 1 al 100 que ha elegido la computadora!");
        do{
            System.out.print("¿Cual crees que sea?: ");
            num = in.nextInt();
            if(num > aleatorio){
                intentos++;
                System.out.println("El numero es mayor que el que eligio la computadora, intenta otra vez!");
            }
            else if(num < aleatorio){
                intentos++;
                System.out.println("El numero es menor que el que eligio la computadora, intenta otra vez!");
            }
            else if(num == aleatorio)
                System.out.println("Has acertado!!! el numero es: " + num + " (intentos " + intentos +")");
        }while(num != aleatorio);
    }   
}

Ejecución:



Espero sus comentarios!

65
Buenas tardes!!!

Resuelvo el ejercicio del capitulo 70° del curso. Se nos presento el siguiente código:

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 error:El problema que tenemos es que nos salta un mensaje de error “operator * cannot be applied to int, java.lang.String”.

Y las preguntas, eran estas:

Citar
¿Qué interpretación haces de este mensaje de error?

String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );

Lo que sucede aqui, es que estamos usando este operador "*" (multiplicacion) con cadenas de texto.. osea, se esta multiplicando un entero por cadena de texto (int * String). Esto da como resultado como se ve, "Error".

Citar
¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa?

Lo corregi de esta manera:

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

Ejecución...!






66
Buenos dias!!

Mi versión del ejercicio del capitulo 69° del curso, enunciado:

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.

Aquí mi clase Mes_Secreto:
Código: [Seleccionar]
package mes_secreto;
import java.util.Scanner;

public class Mes_Secreto {   
    public static void main(String[] args) {
       Scanner in = new Scanner(System.in);
       String meses[] = new String []{"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
       String mesSecreto = meses[5], dato ="";
       System.out.print("Adivine el mes secreto. Introduzca el nombre del mes en minúsculas: ");
       dato = in.next();
       if(dato.equalsIgnoreCase(mesSecreto) == true){
           System.out.println("Has acertado!!!");
       }
       else{
       do{
           System.out.println("No ha acertado. Intente adivinarlo introduciendo otro mes: ");
           dato = in.next();
       }while(dato.equalsIgnoreCase(mesSecreto)== false);
       System.out.println("Has acertado!!!");
       }
    } 
}

Ejecución del programa:



Asi como el ejemplo esta:

Adivine el mes secreto. Introduzca el nombre del mes en minúsculas: febrero

No ha acertado. Intente adivinarlo introduciendo otro mes: agosto

No ha acertado. Intente adivinarlo introduciendo otro mes: octubre

¡Ha acertado!


Saludos!

67
Buenas noches!!!

Vengo aquí a resolver las preguntas del capitulo 68° del curso, dice así:

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

Si se puede acceder, hice la prueba manualmente y si es posible.

Citar
¿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?

Ok, aqui no se si este bien o no, pero me parece que si es posible, si hablan de esto:

person1 = new Persona("Daniel", "Phillips");

Si es asi, se puede hacer tambien...

Corrijanme si ando equivocado! Muchas gracias!

68
Buenos Tardes

Hago entrega del ejercicio del capitulo 67°, debo confesar que fue bastante complicado para mi esto.. Cuando lo complete ayer a la media noche, con sueño me fui a desahogarme con poker xDD

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

Clase CantanteFamoso:

Código: [Seleccionar]
package ArrayObject2;

public class CantanteFamoso {
    private String nombre;
    private String discosConMasVentas;
   
    public CantanteFamoso(){
        nombre = "";
        discosConMasVentas = "";
    }
   
    public CantanteFamoso(String nombre, String discosConMasVentas){
        this.nombre = nombre;
        this.discosConMasVentas = discosConMasVentas;
    }
   
    public String getDiscoConMasVentas(){
        return discosConMasVentas;
    }
   
    public String getNombre(){
        return nombre;
    }
   
}

Clase Lector
Código: [Seleccionar]
package ArrayObject2;
import java.util.Scanner;

public class Lectores {
    public String LeerCadena(){
        Scanner in = new Scanner(System.in);
        return in.nextLine();
    }
}

Clase ListaCantantesFamosos:
Código: [Seleccionar]
package ArrayObject2;
import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantesFamosos {
    ArrayList <CantanteFamoso> cantantes;
    public ListaCantantesFamosos(){
        cantantes = new <CantanteFamoso> ArrayList();
    }
   
    public void setCantanteFamoso(CantanteFamoso Cantante){
        cantantes.add(Cantante);
    }
   
    public void getCantanteFamoso(){
        CantanteFamoso cantante;
        Iterator<CantanteFamoso> sin = cantantes.iterator();
        while(sin.hasNext()){
            cantante = sin.next();
            System.out.print("Cantante: " + cantante.getNombre());
            System.out.println("        Discos con mas ventas: " + cantante.getDiscoConMasVentas());
        }       
    }
}

Clase Test:
Código: [Seleccionar]
package ArrayObject2;

public class Test {
    public static void main(String[]args){
        CantanteFamoso cantante1, cantante2; String dato, cant, disc;
        ListaCantantesFamosos List = new ListaCantantesFamosos();
        Lectores leer = new Lectores();                       
        cantante1 = new CantanteFamoso("Damon Albarn", "Blur"); cantante2 = new CantanteFamoso("Lady Gaga", "The Fame Monster");
        List.setCantanteFamoso(cantante1);
        List.setCantanteFamoso(cantante2);
        System.out.println("La lista contiene los siguientes datos: ");
        List.getCantanteFamoso();
        System.out.println("  ");
        boolean si, no = false;
        while(no == false){
            si = false; no = false;             
            System.out.println("Ingrese otro artista mas: ");
            cant = leer.LeerCadena();
            System.out.println("Ingrese su album mas vendido: ");         
            disc = leer.LeerCadena();
            List.setCantanteFamoso(new CantanteFamoso(cant, disc));
            System.out.println("  ");
            System.out.println("La lista contiene los siguientes datos: ");
            List.getCantanteFamoso();     
            System.out.println("  ");
            while (no == false && si == false){
              System.out.println("¿Deseas agregar otro artista y su album?");
              dato = leer.LeerCadena();
              if(dato.equalsIgnoreCase("Si") == true){si = true; System.out.println("  ");}
              else if(dato.equalsIgnoreCase("No") == true){no = true;}
              else System.out.println("Opcion desconocida, intente de nuevo.");
        }
        }           
    }
}

Esta vez la parte que anteriormente hice con variables enteras que funcionaban como un "Switch", lo desarrolle con variables Booleanas!





Seguire leyendo y leyendo este ejercicio, para poder manejar con mas facilidad  estos casos en que los parametros de los metodos son objetos.

Muchas gracias y saludos a todos!

69
Buenas noches!!!

Otro dato nuevo que ver!! en mi vida había visto otro tipo de for  ???... El enunciado dice así:

Citar
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir tantos cantantes como se desee, para ello usa un bucle while que dé opción a elegir al usuario).


La clase Lectores para leer datos:

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

public class Lector {
    public String LeerCadena(){
        Scanner in = new Scanner(System.in);
        return in.nextLine();
    }
}

Clase ListaCantantesFamosos:
Código: [Seleccionar]
package ArrayObject;
import java.util.ArrayList;

public class ListaCantantesFamosos {
    ArrayList <String> cantantes;
    public ListaCantantesFamosos(){
        cantantes = new <String> ArrayList(2);
    }
   
    public void setCantante(String name){
        cantantes.add(name);
    }
   
    public int getTamaño(){
        return cantantes.size();
    }
   
    public String getCantante(int index){
        if (index >= 0 && index < cantantes.size()){
            return cantantes.get(index);
        }
        else{return "No existe cantante en esta casilla.";}
    }
   
    public void removerCantante(int index){
        if (index >= 0 && index < cantantes.size()){
            cantantes.remove(index);
        }
        else{}
    }
}


Clase test:

Código: [Seleccionar]
package ArrayObject;

public class Test {
    public static void main(String[]args){
        Lector leer = new Lector();
        ListaCantantesFamosos Lista = new ListaCantantesFamosos();
        int no = 0; String dato;
        Lista.setCantante("Ruben Blades");
        Lista.setCantante("Shakira");       
        while(no < 1){
            int si = 0;
            System.out.println("Ingresa un cantante famoso!!");
            dato = leer.LeerCadena();
            System.out.println("   ");
            Lista.setCantante(dato);
            int i = 0;
            for(String data: Lista.cantantes){
            System.out.println(i+1 + ". " + data + ".");
            i++;
        }
            System.out.println("   ");
            while(si < 1 && no < 1){
            System.out.print("Escriba \"Si\" para agregar otro artista, de lo contrario, escriba \"No\" para salir del programa: ");
            dato = leer.LeerCadena();           
            if (dato.equalsIgnoreCase("no") == true){no++;}
            else if (dato.equalsIgnoreCase("si") == true){si++; System.out.println("  ");}
            else System.out.println("Entrada Desconocida. Intentelo de nuevo.");
            }
        }
        System.out.println("Adios!!!");
        }       
    }

Su ejecución es así:





Pude haber usado variables booleanas para el si y no, en ves de esas variables enteras "Switch" tambien. Por cierto, se preguntaran, ¿Para que declare la variable i dentro del while?... era para que me pudiese salir así:

1.
2.
3.
4.
5. . .

Esta parte se podia colocar asi y funcionaba igual:

Código: [Seleccionar]
package ArrayObject;

public class Test {
    public static void main(String[]args){
        Lector leer = new Lector();
        ListaCantantesFamosos Lista = new ListaCantantesFamosos();
        int no = 0; String dato;
        Lista.setCantante("Ruben Blades");
        Lista.setCantante("Shakira");       
       [b] while(no < 1){
            int si = 0, i = 1;
            System.out.println("Ingresa un cantante famoso!!");
            dato = leer.LeerCadena();
            System.out.println("   ");
            Lista.setCantante(dato);       
            for(String data: Lista.cantantes){
            System.out.println(i + ". " + data + ".");
            i++;
        }[/b]
            System.out.println("   ");
            while(si < 1 && no < 1){
            System.out.print("Escriba \"Si\" para agregar otro artista, de lo contrario, escriba \"No\" para salir del programa: ");
            dato = leer.LeerCadena();           
            if (dato.equalsIgnoreCase("no") == true){no++;}
            else if (dato.equalsIgnoreCase("si") == true){si++; System.out.println("  ");}
            else System.out.println("Entrada Desconocida. Intentelo de nuevo.");
            }
        }
        System.out.println("Adios!!!");
        }       
    }

Solo quería ver exactamente que significaba el "i+1" jugando un poco. jajaja!!

Cualquier corrección no duden en decírmelo!

70
Buenas tardes

Hago entrega del ejercicio del capitulo 65 donde el enunciado dice así:

Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos, pida dos cantantes famosos más al usuario, los añada a la lista y muestre el contenido de la lista por pantalla.

Clase ListaCantantesFamosos:

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

public class ListaCantantesFamosos {
    private ArrayList<String> cantantes;

    public ListaCantantesFamosos(){
        cantantes = new ArrayList(2);
    }

    public void setNombreCantante(String nombreCantante){
        cantantes.add(nombreCantante);
    }

    public String getCantante(int index){
        if(index >= 0 && index < cantantes.size()){
            return cantantes.get(index);
        }
        else
            return "No existe cantante en esta casilla.";
    }

    public int getTamaño(){
        return cantantes.size();
    }

    public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else
        {System.out.println("No existe cantante en esta casilla.");}
    }
}

Clase Test:

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

public class Test {
   public static void main(String[]args){
       ListaCantantesFamosos List = new ListaCantantesFamosos();
       List.setNombreCantante("Ruben Blades");
       String dato;
       Scanner in = new Scanner(System.in);
       System.out.println("Ingresa cantante famoso 1 : ");
       dato = in.nextLine();
       List.setNombreCantante(dato);
       System.out.println("Ingresa cantante famoso 2 : ");
       dato = in.nextLine();
       List.setNombreCantante(dato);
       System.out.println(" ");
       for (int i = 0 ; i < List.getTamaño(); i++){
           System.out.println(List.getCantante(i));
       }
   }
}

Resultado:



Agradezco mucho sus comentarios y correcciones.
Gracias!

71
Buenos Dias!!!

Vengo a hacerle la entrega del ejercicio del capitulo 64. Consultamos la clase Stack del API Java. Las preguntas que se nos hacen son estas:

Citar
1. ¿Cómo se llama el método para consultar el objeto en la cima de la pila?

Seria el método peek();

Citar
Looks at the object at the top of this stack without removing it from the stack.


Traducido: "Mira el objeto en la cima de la pila sin removerlo de ella".

Citar
2. ¿Cómo se llama el método para consultar si la pila está vacía?

Seria el método empty();

Citar
Tests if this stack is empty.

Traducido: "Comprueba si la pila esta vacía".

Citar
3.  ¿El método pop podríamos clasificarlo como tipo procedimiento, como tipo función, o como tipo mixto (procedimiento y función)?

Remueve el primer objeto de la pila, devolviendo su valor. Se trata de uno tipo función.

Un saludo a todos!!!

72
Buenas noches!!!

Vengo a resolver las preguntas del siguiente enunciado:

Considera una clase Java que se denomina TripulacionAvion y que tiene como atributos a tres objetos de tipo Persona: Persona piloto; Persona copiloto1; Persona copiloto2.

a) ¿Sería posible que al crear un objeto TripulacionAvion se produjera que piloto, copiloto1 y copiloto2 apuntaran a un mismo objeto, es decir, que existiera una relación de identidad entre los tres atributos?

Opino que si seria posible!!!!

Persona piloto = new Persona();
copiloto1 = piloto;
copiloto2 = piloto;


Los 3 tendrán la misma dirección donde apuntar!

b) ¿Existiría relación de identidad cuando creemos un objeto TripulacionAvion entre los tres atributos si no se inicializaran en el constructor?

No. ya estas haciendo un fallo si no inicializas en el constructor de partida. No tendría una "identidad" el objeto, por decirlo así.

c) ¿Cuál sería el contenido de los atributos si no se inicializan en el constructor y creamos un objeto de tipo TripulacionAvion?

Al objeto que aun no se a inicializado sus atributos en el constructor... como se trata de objetos y no de datos primitivos, les coloca un "Null" automáticamente!!

Corrijanme si estoy en lo incorrecto!!
Gracias!!!

73
Buenas noches

El enunciado del capitulo 62 es este:

Citar
Crea una clase en cuyo método main ejecutes una comparación letra a letra usando equals de dos palabras usando bucles. Por ejemplo si las palabras son “avispa” y “ave” el programa debe dar como resultado: ¿Letra 1 igual en las dos palabras? True. ¿Letra 2 igual en las dos palabras? True ¿Letra 3 igual en las dos palabras? False ¿Letra 4 igual en las dos palabras? La palabra 2 no tiene letra 4 ¿Letra 5 igual en las dos palabras? La palabra 2 no tiene letra 5 ¿Letra 6 igual en las dos palabras? La palabra 2 no tiene letra 6.

Estuvo medio complicado jajaja pero ahi le di!!, lo hice todo en el main como dice:

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

public class Compara {
    static Scanner in = new Scanner(System.in);
    static String palabra1, palabra2;
    static int mayor, menor, aux;
    public static void main(String[]args){
        System.out.println("Ingrese la primera palabra: ");
        palabra1 = in.next();
        System.out.println("Ingrese la segunda palabra: ");
        palabra2 = in.next();
        if (palabra1.length()> palabra2.length()){
            mayor = palabra1.length();
            menor = palabra2.length();
            aux = 2;
        }
        else{
            mayor = palabra2.length();
            menor = palabra1.length();
            aux = 1;
        }
        for(int i = 0, j = 1; i < mayor; i++, j++){           
            System.out.print("¿Letra " + j + " es igual en las dos palabras?");
            if (i < menor){
                System.out.println(" " + palabra1.substring(i, i+1).equals(palabra2.substring(i, i+1)));
            }
            else
                System.out.println(" La palabra " + aux + " no tiene letra " + i);
        }
    }
}

Resultado:



Gracias por el curso!


74
Buenas tardes

Esta vez no he venido a resolver un ejercicio, sino que vine a resolver una metida de pata del pasado (Que fue bastante grande creo xD). Hace aproximadamente 26 días, escribí un código sobre el Ejercicio CU00630B (Que por cierto, también no tenia que escribir nada de codigo.) que presentaba varios problemas.

Para los curiosos que quieran saber sobre esta metida de pata, aquí esta:

https://www.aprenderaprogramar.com/foros/index.php?topic=2090.msg10282#msg10282

He creado la versión 2 de "DiscMan", y lo presento aquí, para saber en que mejorar y demás. Es lo mismo que antes... 3 discos, hasta 20 temas musicales, etc. Aun no termino el curso, estoy en el punto 62, tomen en cuenta esto por si cometí otra vez una metida de pata por favor! Jajaja!

Primero, les comparto lo que hice. Basándome en el pensar "Divide y vencerás.",cree 4 clases en total:

1. La clase DiscosMusicales que usaremos para crear los 3 objetos Disco o "DiscosMusicales".

Código: [Seleccionar]
package Discos;
public class DiscosMusicales {
    private String nombreDisco, autor, formato, nombreCancion[]= new String[19];
    private double duracion, duracionCancion[] = new double[19];
    private int numeroCanciones;
   
    public DiscosMusicales(){
        nombreDisco = "";
        autor = "";
        formato = "";
        duracion = 0;
        numeroCanciones = 0;
        nombreCancion = new String[]{"","","","","","","","","","","","","","","","","","","",""};
        duracionCancion = new double[]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};     
    }   
   
     public void setNombreDisco(){
        System.out.println("--------------------------------------------");
        Lectores leer = new Lectores();
        System.out.println("Ingrese el nombre del disco: ");
        nombreDisco = leer.LeerCadena();
    }
     
     public void setAutor(){
         Lectores leer = new Lectores();
         System.out.println("Ingrese el nombre del autor de este disco: ");
         autor = leer.LeerCadena();
     }
     
     public void setFormato(){
         Lectores leer = new Lectores();
         System.out.println("Ingrese el formato del disco: ");
         formato = leer.LeerCadena();
     }
     
     public void setCanciones(){
         Lectores leer = new Lectores();
         do{
         System.out.println("¿Cuantas canciones son?: ");
         numeroCanciones = leer.LecturaEntero();
         if(numeroCanciones > 20){System.out.println("Solo se pueden ingresar hasta 20 temas musicales. \nIntente de nuevo.");
         System.out.println("                                     ");
         }
         }while(numeroCanciones > 20);
         for (int i = 0, j = 1; i < numeroCanciones; i++, j++){
         System.out.println("Ingrese el nombre de la cancion numero " + j + ": ");
         nombreCancion[i] = leer.LeerCadena();       
         System.out.println("Ingrese la duracion de la cancion numero " + j + ": ");
         duracionCancion[i] = leer.LecturaDecimal();
         duracion = duracion + duracionCancion[i];
     }
         System.out.println("Datos Listos!.");
         System.out.println("--------------------------------------------");
     }
             
     public String getNombreDisco(){
         return nombreDisco;
     }
     
     public String getAutor(){
         return autor;
     }
     
     public String getFormato(){
         return formato;
     }
     
     public void getCanciones(){
         for (int i = 0, j = 1; i < numeroCanciones; i++, j++){
             System.out.println(j + ". " + nombreCancion[i] + " (Duracion: " + duracionCancion[i] + ").");
         }
         System.out.println("*************************************************************************");
         System.out.println("Duracion total del disco: " + duracion);
         System.out.println("-------------------------------------------------------------------------");
     }
}

2. La clase Lectores que se utilizara para leer los datos que el usuario ingrese.

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

public class Lectores {   
   
    public Lectores(){}
   
    public String LeerCadena(){
        Scanner in = new Scanner(System.in);       
        return in.nextLine();
    }
   
    public Double LecturaDecimal(){
        Scanner in = new Scanner(System.in);
        return in.nextDouble();
    }
   
    public int LecturaEntero(){
        Scanner in = new Scanner(System.in);
        return in.nextInt();
    }
   
    public char LecturaChar(){
        Scanner in = new Scanner(System.in);
        return in.next().charAt(0);
    }
}

3. La clase Menu en donde vamos a ejecutar diferentes menús de operaciones. Me lo imagine así: Como el sirviente, recepcionista, mesero, etc... que te pregunta que deseas hacer, ejecutar, que quieres ver y demás.

Código: [Seleccionar]
package Discos;
public class Menu {
    DiscosMusicales Disco1 = new DiscosMusicales();
    DiscosMusicales Disco2 = new DiscosMusicales();
    DiscosMusicales Disco3 = new DiscosMusicales();
    int elige;
    boolean sal1 = false, sal2 = false;
    public char opcion;
   
    public Menu(){opcion = ' ';}
   
     public void MenuPrincipal(){
        Lectores leer = new Lectores(); 
        sal1 = false;
        do{
        System.out.println("Bienvenido a la nueva actualizacion de DISCMAN! \nPara salir del programa, aprete 4. \nElige uno de los 3 discos para empezar: ");
        elige = leer.LecturaEntero();
        if (elige <= 3){ MenuDisco();}
        else if (elige == 4) { System.out.println("Nos vemos pronto!!!"); sal2 = true;}
        else
            System.out.println("Opcion desconocida. Intente de nuevo.");
            System.out.println("                                     ");
        }while(sal2 == false);
    }
   
    public void MenuOperaciones(){   
    Lectores leer = new Lectores();
    System.out.println("Elige una opcion que desees ejecutar en el menú: ");
    System.out.println("Ingrese A para agregarle datos al disco.");
    System.out.println("Ingrese B para imprimir todos los datos del disco.");
    System.out.println("Ingrese C para volver al menu de elegir disco.");
    System.out.print("Opcion: ");
    opcion = leer.LecturaChar();
}
   
   
    public void MenuDisco(){       
        do{
        switch(elige){
                case 1:
                    System.out.println("--------------------------------------------");
                    System.out.println("Has elegido el disco 1!: ");
                    MenuOperaciones();
                    if(opcion == 'A'||opcion == 'a'){Disco1.setNombreDisco(); Disco1.setAutor(); Disco1.setFormato(); Disco1.setCanciones();}
                    else if(opcion == 'B'||opcion == 'b'){
                    System.out.println("Nombre del disco: " + Disco1.getNombreDisco());
                    System.out.println("Nombre del autor: " + Disco1.getAutor());
                    System.out.println("Nombre del formato: " + Disco1.getFormato());
                    System.out.println("Canciones: ");
                    Disco1.getCanciones();}
                    else if(opcion == 'C'||opcion == 'c'){ System.out.println("Saliendo... "); sal1 = true;}
                    else
                        System.out.println("Opcion desconocida. Intente de nuevo.");
                        System.out.println("                                     ");
                    System.out.println("--------------------------------------------");
                break;
                case 2:
                    System.out.println("--------------------------------------------");
                    System.out.println("Has elegido el disco 2!: ");
                    MenuOperaciones();
                    if(opcion == 'A'||opcion == 'a'){Disco2.setNombreDisco(); Disco2.setAutor(); Disco2.setFormato(); Disco2.setCanciones();}
                    else if(opcion == 'B'||opcion == 'b'){
                    System.out.println("Nombre del disco: " + Disco2.getNombreDisco());
                    System.out.println("Nombre del autor: " + Disco2.getAutor());
                    System.out.println("Nombre del formato: " + Disco2.getFormato());
                    System.out.println("Canciones: ");
                    Disco2.getCanciones();}
                    else if(opcion == 'C'||opcion == 'c'){ System.out.println("Saliendo... "); sal1 = true;}
                    else
                        System.out.println("Opcion desconocida. Intente de nuevo.");
                        System.out.println("                                     ");
                    System.out.println("--------------------------------------------");
                break;
                case 3:
                    System.out.println("--------------------------------------------");
                    System.out.println("Has elegido el disco 3!: ");
                    MenuOperaciones();
                    if(opcion == 'A'||opcion == 'a'){Disco3.setNombreDisco(); Disco3.setAutor(); Disco3.setFormato(); Disco3.setCanciones();}
                    else if(opcion == 'B'||opcion == 'b'){
                    System.out.println("Nombre del disco: " + Disco3.getNombreDisco());
                    System.out.println("Nombre del autor: " + Disco3.getAutor());
                    System.out.println("Nombre del formato: " + Disco3.getFormato());
                    System.out.println("Canciones: ");
                    Disco3.getCanciones();
                    }
                    else if(opcion == 'C'||opcion == 'c'){ System.out.println("Saliendo... "); sal1 = true;}
                    else
                        System.out.println("Opcion desconocida. Intente de nuevo.");
                        System.out.println("                                     ");
                    System.out.println("--------------------------------------------");
                break;
                default:
                    System.out.println("No se reconoce la opcion insertada. Intente de nuevo.");
                    System.out.println("                                                     ");
                break;
            }
        }while(sal1 == false);
        MenuPrincipal();
        }
    }   

4. La ultima clase, en donde ejecutaremos el programa, la que va a contener el método main.

Código: [Seleccionar]
package Discos;
public class Main {
    public static void main(String[]args){
        Menu main = new Menu();
        main.MenuPrincipal();
    }
}

Voy citando cada punto del error que me comentaron en el post pasado. Y hay uno que me deja en duda (quizá el que me corrigió lo volvió a notar):

Citar
. La clase DiscoMusical incluye el main. Ineficiente.
En Java, cualquier proyecto consta de varias clases. Solo una de ellas tendrá el main, las otras son usadas por el main para llevar a cabo la tarea.

Como se puede ver, el main ahora en este código nuevo, tan solo va a citar una clase (Menu). La clase Menu utiliza a la clase Lectores y DiscosMusicales. Por ejemplos que he visto y demás, es valido que una clase llegue a utilizar otra clase.


Citar
Creas un main extenso. Ineficiente. El director de una empresa no se pone a fabricar componentes o envasar el producto. El director, da órdenes y controla el funcionamiento general.

Totalmente arreglado este detalle. Mi antiguo método main tenia alrededor de 234 lineas de código. Ahora... mi método main tan solo lleva 7 lineas. No se pone a hacer absolutamente nada, digamos que esta vez el director contrato a un  sirviente, recepcionista, mesero, etc, y solo es necesario darle la orden al que contrato.. ya lo demás se encarga el Sr sirviente o no se como le llamen jajaja

Citar
. Creas atributos de la clase sin métodos set y get. Como el main está en la misma clase, manipulas los atributos directamente.
Bajo este concepto tampoco debías crear los métodos set y get del resto de los atributos.

Clase con el metodo main aparte separado.

Citar
. El método next() de la clase Scanner toma el espacio en blanco como separador de las entradas. Eso te obliga a escribir RamonRamirez o Ramon_Ramirez  en lugar de Ramon Ramirez.
Si no, lo toma como dos entradas del teclado distintas.
El método nextLine() acepta el espacio en blanco y usa la tecla ENTER como separador de las entradas desde teclado.

Esto fue lo que utilize para los lectores. En vez de next(); ahora es nextLine();... Hubo algo que me sucedio anteriormente con el nextLine();, con esto, llegue a la conclusión que como programaba todo en el main, era por eso que me tomaba los espacios....


Citar
. Hay código repetido. Ineficiente. Si en tu clase vas a trabajar con tres discos, repites el código una vez para cada disco.

Ok, aquí si puede que patine un poco. De esa forma es la única que se me ocurrió para el menú.

Citar
switch(elige){
                case 1:
                    System.out.println("--------------------------------------------");
                    System.out.println("Has elegido el disco 1!: ");
                    MenuOperaciones();
                    if(opcion == 'A'||opcion == 'a'){Disco1.setNombreDisco(); Disco1.setAutor(); Disco1.setFormato(); Disco1.setCanciones();}
                    else if(opcion == 'B'||opcion == 'b'){
                    System.out.println("Nombre del disco: " + Disco1.getNombreDisco());
                    System.out.println("Nombre del autor: " + Disco1.getAutor());
                    System.out.println("Nombre del formato: " + Disco1.getFormato());
                    System.out.println("Canciones: ");
                    Disco1.getCanciones();}
                    else if(opcion == 'C'||opcion == 'c'){ System.out.println("Saliendo... "); sal1 = true;}
                    else
                        System.out.println("Opcion desconocida. Intente de nuevo.");
                        System.out.println("                                     ");
                    System.out.println("--------------------------------------------");
                break;
                case 2:
                    System.out.println("--------------------------------------------");
                    System.out.println("Has elegido el disco 2!: ");
                    MenuOperaciones();
                    if(opcion == 'A'||opcion == 'a'){Disco2.setNombreDisco(); Disco2.setAutor(); Disco2.setFormato(); Disco2.setCanciones();}
                    else if(opcion == 'B'||opcion == 'b'){
                    System.out.println("Nombre del disco: " + Disco2.getNombreDisco());
                    System.out.println("Nombre del autor: " + Disco2.getAutor());
                    System.out.println("Nombre del formato: " + Disco2.getFormato());
                    System.out.println("Canciones: ");
                    Disco2.getCanciones();}
                    else if(opcion == 'C'||opcion == 'c'){ System.out.println("Saliendo... "); sal1 = true;}
                    else
                        System.out.println("Opcion desconocida. Intente de nuevo.");
                        System.out.println("                                     ");
                    System.out.println("--------------------------------------------");
                break;
                case 3:
                    System.out.println("--------------------------------------------");
                    System.out.println("Has elegido el disco 3!: ");
                    MenuOperaciones();
                    if(opcion == 'A'||opcion == 'a'){Disco3.setNombreDisco(); Disco3.setAutor(); Disco3.setFormato(); Disco3.setCanciones();}
                    else if(opcion == 'B'||opcion == 'b'){
                    System.out.println("Nombre del disco: " + Disco3.getNombreDisco());
                    System.out.println("Nombre del autor: " + Disco3.getAutor());
                    System.out.println("Nombre del formato: " + Disco3.getFormato());
                    System.out.println("Canciones: ");
                    Disco3.getCanciones();
                    }
                    else if(opcion == 'C'||opcion == 'c'){ System.out.println("Saliendo... "); sal1 = true;}
                    else
                        System.out.println("Opcion desconocida. Intente de nuevo.");
                        System.out.println("                                     ");
                    System.out.println("--------------------------------------------");
                break;
                default:
                    System.out.println("No se reconoce la opcion insertada. Intente de nuevo.");
                    System.out.println("                                                     ");
                break;
            }

¿Como podría entonces, crear un menú en donde yo elija cual objeto quiero controlar sin repetir un código? Si es que esta incorrecto como lo maneje?.

Citar
. Por último, cuando usas la opción C para mostrar los datos, sucede lo siguiente.
Si tu disco tiene 3 canciones, en el contador vas desde 0 hasta 3, que son 4 pasos. El último dato siempre sera null, pues ese elemento del array no se ha inicializado.

Los dichosos arreglos pude repararlos, ya sueltan toda su informacion, no sale ni un Null.

75
Buenas tardes!

Capitulo siguiente! con el mismo enunciado solo que en vez de for, ahora es While:

Clase SeparaCadena actualizada:

Código: [Seleccionar]
public class SeparaCadena {
public SeparaCadena(){}

public String Lectura(){
    Scanner lee = new Scanner(System.in);
    String dato;
    dato = lee.nextLine();
    return dato;
}

public void SeparaCaracteres(){
    String data;
    int j = 0, i = 0, num;
    SeparaCadena Funciones = new SeparaCadena();
    System.out.println("Ingresa una frase: ");
    data =  Funciones.Lectura();
    num = data.length();
    while(i < num){
        System.out.println(data.substring(j, i+1));
        j++;
        i++;
    }
}
}



Muchas gracias!!

76
Buenas tardes

Hago entrega del ejercicio con el siguiente enunciado:

Crea una clase con un método main que pida una entrada de teclado y usando un bucle for, el método length de la clase String y el método substring de la clase String, muestre cada una de las letras que componen la entrada. Por ejemplo si se introduce “ave” debe mostrar:

Letra 1: a
Letra 2: v
Letra 3: e


Aqui mi clase SeparaCadena:

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

public class SeparaCadena {
public SeparaCadena(){}

public String Lectura(){
    Scanner lee = new Scanner(System.in);
    String dato;
    dato = lee.nextLine();
    return dato;
}

public void SeparaCaracteres(){
    String data;
    SeparaCadena Funciones = new SeparaCadena();
    System.out.println("Ingresa una frase: ");
    data =  Funciones.Lectura();
    for (int i = 0, j = 0; i< data.length(); i++, j++){
        System.out.println(data.substring(j,i+1));
    }
}
}

Clase Main:

Código: [Seleccionar]
package DesCaracteres;

public class Main {
    public static void main (String[]args){
         SeparaCadena operacion = new SeparaCadena();
         operacion.SeparaCaracteres();
    }
}

Como se ve, cree otra variable en el for (la J) para que fuese contando el inicio de la cadena... Ejemplo:

"Raton".SubString(j, i+1)

Cuando J vale 0 (parte desde el espacio) y la variable i vale 1 (Es la R). Se imprime R

Cuando J vale 1 (parte de la R) y la variable i vale 2 (Es la A). Se imprime A

Cuando J vale 2 (parte de la A) y la variable i vale 3 (Es la T). Se imprime T

... y así sucesivamente...



Cualquier Comentario, mejora, no duden es decirlo!

77
Muy buenos días tengan todos!!

En esta preciosa tarde en la Universidad, decidí leer un capitulo y desarrollar el siguiente ejercicio del curso... su enunciado dice así:

Crea una clase con un método main que pida una entrada de teclado y usando condicionales, el método length de la clase String y el método substring de la clase String, muestre un mensaje indicando:

a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.

b) Si la cadena introducida comienza por la letra a.


Presento mi código. Mi clase para los 2 métodos que voy a utilizar...

Clase Metodos:

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

public class Metodos {
public Metodos(){}

public String Lectura(){
    Scanner lea = new Scanner (System.in);
    String palabra = lea.nextLine();
    return palabra;
}

public void Comprobacion(){
    String caracter, Primero;
       int num;
       Metodos Lectura = new Metodos();
       System.out.println("Ingrese una cadena de caracteres: ");
       caracter = Lectura.Lectura();
       num = caracter.length();
       if (num < 5){
           System.out.println("La cadena tiene menos de 5 caracteres.");
       }
       else if (num >= 5 && num <= 15){
           System.out.println("La cadena tiene entre 5 y 15 caracteres.");
       }
       else if (num > 15){
           System.out.println("La cadena tiene mas de 15 caracteres.");
       }
       Primero = caracter.substring(0, 1);
       if(Primero.matches("a") || Primero.matches("A")){
           System.out.println("La cadena empieza con A.");
       }
       else
           System.out.println("La cadena no empieza con A.");
}

Aquí cree un método para lectura de cadenas de caracteres (String). Lo decidí colocar aquí para que el main tenga el menor código posible (no se si sea practico). Al inicio me cerre un poco con la ultima parte... esa de decir que si empieza con A o no. Pense que solo debía usar el metodo length y substring... pero cuando intentaba usar el substring en cierto punto (para comprobar si el primer caracter era A) me soltaba error...

En el ultimo If intente colocar esto para intentar comprobar... caracteres.substring(0,1) == "a" pero fue sin éxito.. perdonen si tuve que hacer trampa y usar el match (pense tambien en un equals xD) pero igual tuve que utilizar el substring para extraer el primer carácter!!!

Clase Main:

Código: [Seleccionar]
package Caracteres;
public class Main {
   public static void main(String[]args){
       Metodos Compara; Compara = new Metodos();
       Compara.Comprobacion();
   }
}


Ejecución:





Cualquier corrección, o comentario se los agradeceria mucho. Y si es posible comprobar tan solo usando un substring, se le agradeceria mucho comentar su solucion.

Mil gracias!!

78
buenas tardes

Esta pequeña practica consistía en provocar la llamada "Sobrecarga de nombres" y el uso del this para diferenciar el parámetro del campo.

Código: [Seleccionar]
package profe;

public class Profesor {
    private String nombre, apellido;
    private int edad;
    private boolean especialista, casado;
   
    public Profesor(String nombre, String apellido, boolean especialista, boolean casado, int edad){
        this.nombre = nombre;
        this.apellido = apellido;
        this.edad = edad;
        this.especialista = especialista;
        this.casado = casado;
    }
   
    public Profesor(){
        nombre = "";
        apellido = "";
        edad = 0;
        especialista = false;
        casado = false;
    }
   
    public void setNombre(String nombre){
        this.nombre = nombre;
    }
   
    public void setApellido(String apellido){
        this.apellido = apellido;
    }
   
    public void setEdad(int edad){
        this.edad = edad;
    }
   
    public void setEspecialista(boolean especialista){
        this.especialista = especialista;
    }
   
    public void setCasado(boolean casado){
        this.casado = casado;
    }
   
    public String getNombre(){
        return nombre;
    }
   
    public String getApellido(){
        return apellido;
    }
   
    public int getEdad(){
        return edad;
    }
   
    public boolean getEspecialista(){
        return especialista;
    }
   
    public boolean getCasado(){
        return casado;
    }
}


Un detalle importante !, si estoy equivocado, haganmelo saber.

Saludos

79
Muy buenas tardes!!

Vengo con el analisis sobre este cap, método interno y método externo.Para empezar, tengo entendido dos cosas (corrijanme si estoy equivocado de antemano):

Declarar un objeto: Seria Profesor profesor1;
Crear un objeto: Seria profesor1 = new Profesor();

Bien, con las preguntas del ejercicio:

Citar
a) ¿Es posible llamar a un método externo de un objeto que ha sido declarado pero no creado?

Osea. Si entiendo bien lo que se pregunta... ¿Podría utilizar un método de la clase del objeto tan solo declarandola (Profesor profesor1;) sin antes haberla creado (profesor1 = new profesor(); )?

Mi respuesta seria que no. Se requiere inicializar todas las variables (atributos de la clase, etc) antes de su uso, sino me podría dar un error. Cuando creamos el objeto, se ejecuta el constructor de la clase y "construye" el objeto. Los atributos se inicializan automáticamente al crear el objeto en pocas palabras...

Código: [Seleccionar]
public Profesor_Secundaria(){
         nombre = "";
         apellido = "";
         edad = 0;
         materia1 = "";
         materia2 = "";
         materia3 = "";
     }

Citar
b) ¿Es posible llamar a un método externo de un objeto “A” que ha sido declarado y creado pero cuyo constructor está vacío?

Si es posible. Se pueden modificar atributos directamente sin haberlas insertado en un constructor. Según tengo entendido, no es recomendable trabajar con los atributos de la clase así...

Citar
c) Una llamada al método pow de la clase Math que hacemos dentro de un método definido en una clase ¿Es una llamada a un método interno o a un método externo?

El método pow, viene de otra clase externa llamada math. Si creamos un objeto, y le insertamos un método que utiliza métodos de la clase math (siendo math una clase externa). Seria una llamada a un método externo.

Citar
¿La llamada al método pow se hace sobre un objeto declarado y creado o no declarado y no creado?

Si hablamos sobre  un objeto que utiliza pow....(Ejemplo la practica miniCalculadora) entonces, si se debe declarar y crear.

Si estamos hablando entonces, de llamar al pow por separado, no es necesario declarar ni crear una variable de la clase Math.

Ya he metido la pata antes... Creo haber entendido las preguntas, si estoy en lo incorrecto, agradezco sus respectivas correcciones y por favor, tenganme paciencia  :P.

80
Hola a todos

Hoy anduve probando esto del this... y según vi con esto puedes inicializar las variables en el constructor sin estar escribiendo pepe = "grande", edad = 24, cedula = "2-234-123". . .

Citar
public class Deposito {   

    //Campos de la clase
    private float diametro;
    private float altura;
    private String idDeposito;

    //Constructor sin parámetros auxiliar
    public Deposito () { //Lo que hace es llamar al constructor con parámetros pasándole valores vacíos
        this(0,0,"");            } //Cierre del constructor


Aqui veo que se inicializa las variablels diametro, altura y idDeposito ...  lo veo bastante util para no tener que estar escribiendo tantas cosas.

Viene la duda.

Quize realizar una prueba, hice esta clase  Profesor_primaria:

Código: [Seleccionar]
package Prof;

public class Profesor_primaria {
    private String nombre, apellido, materia;
    private int edad;
   
    public Profesor_primaria(){
        this("", "", "", 0); 
    }
   
    public void setNombre(String vNombre){
        nombre = vNombre;
    }
   
    public void setApellido(String vApellido){
        apellido = vApellido;
    }
   
    public void setEdad(int vEdad){
        edad = vEdad;
    }
   
    public void setMateria(String vMateria){
        materia = vMateria;
    }
   
    public String getNombre(){
        return nombre;
    }
   
    public String getApellido(){
        return apellido;
    }
   
    public int getEdad(){
        return edad;
    }
   
    public String getMateria(){
        return materia;
    }
}

En la linea del this, pensé que no me daría problemas, pero me suelta un error. Compare el código del capitulo con mi código, busque cual podía ser el problema pero no pude encontrarlo.

Quizás no funcione para eso... o quizás si. ¿Como funciona el this?, ¿Abre escrito mal algo?.

Páginas: 1 2 3 [4] 5

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