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

Páginas: 1 ... 7 8 9 10 11 [12] 13 14
221
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!

222
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!!!

223
Bien! Apunto todas esas observaciones!! Cuando aprenda sobre colecciones colecciones de objetos, lo mejorare!, ademas del cambio del nombre de la clase. Todo el crédito se lo llevan ustedes por enseñarme y ayudarme.

Muchas gracias por comentar!

224
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!!!

225
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!


226
Okay!! Tomo apuntes de esto. Ya se que el cuerpo no puede dirigir la cabeza...!

Con lo de la J, perdón otra vez, Falle jajaja

Gracias!

227
Ah okay, entonces no es trampa, gracias por aclararme esto!
Graciassss   ;D

228
Aquí su ejecución:

El menu principal del programa de la clase Menu (Se ejecuta el método MenuPrincipal();). Se nos da la bienvenida y se nos pide cual disco deseamos modificar su información:


Esto es lo que ocurrirá cada vez que ingresemos una opción fuera del rango que da el programa:


Ahora elegimos el disco 1. Se nos ejecutara el método MenuOperaciones de la clase Menu.


Vamos a ingresarle datos al archivo (La clase Menu, utiliza a la Clase DiscoMusical para modificar datos). Para no ser chafas y comprobar que funciona bien, les vamos a ingresar datos de un disco real. En el primer objeto Disco 1 vamos a ingresarle el album Plastic Beach de Gorillaz. Son 16 temas (cabe bajo el limite que tiene el programa.)


Cuando terminamos de agregar los temas musicales y su duración. Pasara esto:


Ya se ha cargado los datos al primer objeto Disco1. Ahora para comprobar que los arreglos funcionen bien y estén recogiendo los datos de cada objeto, vamos a salir al menú principal del programa (Se vuelve a ejecutar el método MenuPrincipal( );  ):


Elegimos al objeto dos, disco2 e ingresamos datos (Volvemos al método MenuOperaciones(); ). Esta vez le toca a Skrillex y su álbum Recess con 11 temas musicales:


Al terminar de agregar datos, como comprobación, volvemos al menú principal y elegimos el primer objeto disco1:


Apretamos B para consultar los datos del objeto... y enhorabuena:



Ahora consultemos el álbum de Skrillex del objeto dos...



Ya pudimos comprobar que todos los datos se registraron en cada objeto correctamente. Que tal del objeto, Disco3?


Esta vació, ya que nunca elegí al objeto 3 para ingresarle información.

Me siento bastante satisfecho hasta ahora, gracias a ustedes por cierto  ;). Se ve asi en duracion total porque aun no se como redondear en java. Cuando aprenda, en la proxima version de DiscMan lo incluyo. Tambien incluire cualquier cosa o bicho feo que encuentren en el codigo!

Mil gracias por su ayuda chicos, esperare con ansias sus comentarios en que puedo mejorar  :)

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

230
Hola de nuevo!!

No pude encontrar una solución sin "hacer trampas", osea... solo utilizar hasta donde he visto en este curso y no utilizar métodos ni soluciones de afuera. Lo pude hacer sin match usando un substring... pero con un truquillo colado. Usando un char pude comprobar si empezaba con A , pero claro, tuve que extraer la primera letra con substring y luego convertir ese dato a char:

Clase AnalizarCadena:

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

public class AnalizarCadena {
public AnalizarCadena(){}

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

public void Comprobacion(){
       String caracter, aux;
       char primero;
       int num;
       System.out.println("Ingrese una cadena de caracteres: ");
       caracter = 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.");
       }
       aux = caracter.substring(0, 1);
       primero = aux.charAt(0); // Conversion a char.
       if(primero == 'A' || primero == 'a'){
           System.out.println("La cadena empieza con A.");
       }
       else
           System.out.println("La cadena no empieza con A.");
}
}

Se me hace difícil pensar como podría yo comprobar el primer carácter sin hacer trampas. ¿Sabrás como podre yo realizar eso?...Hasta ahora en este ejercicio, veo que siempre vas a necesitar algo adicional para comprobar. :s

Muchas gracias de nuevo

231
Buenas otra vez Jorge

Okay, tome apuntes muy útiles de este comentario, vaya cabeza dura que fui en tener que crear otra variable. Pero creo que ahora si lo necesitare para los de la "Letra 1, Letra 2..."

Problema con for:

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

public class SeparaCadena {
static int num;
public SeparaCadena(){}

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

public void SeparaCaracteres(){
    for(int i = 0, j = 1; i < num; i++, j++){
        System.out.println("Letra " + j + ": " + Main.data.substring(i, i+1));
    }   
}
}

Clase main:
Código: [Seleccionar]
package DesCaracteres;

public class Main {
    static String data;
    public static void main (String[]args){     
         SeparaCadena operacion = new SeparaCadena();
         System.out.println("Ingresa una frase: ");
         data =  operacion.Lectura();
         SeparaCadena.num = data.length();
         operacion.SeparaCaracteres();       
    }
}

Problema con while:

Clase  SeparadorCadena:

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

public class SeparaCadena {
static int num;
public SeparaCadena(){}

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

public void SeparaCaracteres(){
    int j = 1, i = 0;
    while(i < num){
        System.out.println("Letra " + j + ": " + Main.data.substring(i, i+1));
        i++;
        j++;
    }
}
}

Clase Main

Código: [Seleccionar]
package DesCaracteres;

public class Main {
    static String data;
    public static void main (String[]args){     
         SeparaCadena operacion = new SeparaCadena();
         System.out.println("Ingresa una frase: ");
         data =  operacion.Lectura();
         SeparaCadena.num = data.length();
         operacion.SeparaCaracteres();       
    }
}

Corre exactamente igual en los 2:




Asi que en el main puedo escribir un menu... es que anteriormente (y leido) en el main debía tener la menor cantidad de código posible...

Muchas gracias por tu ayuda!

232
Hola Jorge!

Mil Gracias por tu respuesta. Solo quisiera aclararme una duda con respecto a este comentario:

Citar
Usar el método matches en este ejercicio no es que este bien ni mal, esta bien porque es bueno siempre saber que mientras programamos podemos obtener un mismo resultado de diferentes maneras y es bueno poder tener ese dominio, pero también esta mal porque te has rendido al no poder hacerlo como lo pide el enunciado, estos ejercicios están elaborados afin de que el alumno o usuario use recursos aprendidos en unidades anteriores a la del ejercicio o recursos aprendidos en la misma unidad de este.

Ya me lo temía... por eso pense 3 veces antes de recurrir a usar el match. Se podía hacer tan solo con un substring??? Si es así, como??

Yo pense que escribiendo cadena.substring(0,1) == "a" funcionaria pero no. Por ahi lei mas adelante que tu no puedes comparar un objeto con ==, solo es valido con los tipos primitivos... Ya me imagino porque me paso esto, porque el String es un objeto.. 

Creo que ya se me prendio el bombillo. Dejame volver a intentarlo sin match. Si no puedo vengo de nuevo a preguntar! Muchisimas gracias!

233
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!!

234
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!

235
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!!

236
Aaa ok!!! Mil gracias por tu ayuda!! Muy importante la respuesta de la ultima pregunta. No sabia eso :O

Gracias!!  :D

237
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

238
Quizás no me  explique bien u,u

Mi consulta es, ¿Como escribiría los parámetros?:

Si antes escribía  casita.setSalonCasa("mansion",4);
                           casita.setCocina(true, 4);

¿Como lo haría ahora que recibe como parámetro un objeto?

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

240
Hola!

Ooops, disculpadme por mi falta de atención!!

Me puse a jugar con el this en la practica de la clase motor. Aquí descubrí algunas cosas con el:

Una especie de invocación del constructor, solo que este vez, lo genera con parámetros...



Lo de abajo (clone, equals, finalize...) supongo que se trata de un nivel mas alto.



Ahora como vemos aquí, tengo dos formas de invocar el objeto


También con el, puedo llamar métodos y variables de la clase:


this seria como la afirmación de que lo que llamo se encuentra en la clase.

Es lo mismo escribir setTipoBomba(2); que this.setTipoBomba(2);, igual que tipoBomba y this.tipoBomba.

Supongo que como el código no es extenso, me parece un tanto tonta. Creo que tiene mas importancia, o no se...  xD

Páginas: 1 ... 7 8 9 10 11 [12] 13 14

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