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

Páginas: 1 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 25
161
Hola Dan

En primer lugar te pongo un enlace que te muestra ¿Cómo insertar código en el foro?
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

En cuanto a tu código, es funcional. Pero te voy a dar unos apuntes para que tu código gane presencia y calidad.


Por convención, el nombre de las clases empieza con mayúscula (ejem. Persona), en cambio los atributos, parámetros y métodos empezarán con minúscula (ejem. numeroDocumentoIdentidad, ingresoNombre). Todos tus métodos set y get empiezan con minúscula. Bien.

Y si un atributo tiene por nombre: numeroDocumentoIdentidad, su método set se llamará setNumeroDocumentoIdentidad y su método get se llamará getNumeroDocumentoIdentidad.
Como ves, cuando el nombre de un atributo/campo de clase, un parámetro o un método está compuesto por varias palabras, empezamos con minúscula, y la primera letra de las otras palabras la escribimos en mayúscula. No tienes más que fijarte en el ejemplo de la clase Taxi incluido en esta lección.

Te propongo que rebautices los nombres de tu clase para que sigan esa convención.

Si tienes alguna duda al respecto, aquí nos tienes.

Saludos

162
Hola Eduardo

Para que tu código te dé la respuesta que esperas, debes hacer lo que marcamos en negrita en la siguiente cita

Citar
Para ir conociendo BlueJ, vamos a fijarnos ahora en la pequeña ventana que aparece en la parte inferior derecha de la ventana principal (si no está activa, actívala en el menú View à Show Codepad). Esta ventana, denominada Codepad, nos permite escribir código utilizando los objetos que tenemos en el banco de objetos. Si el objeto que has creado se llama combinad1, puedes escribir el siguiente código: combinad1.combinacion (“Thomas”, “Alva Edison”); y pulsa enter. Para comprobar que el método se está ejecutando introduce en el código una instrucción para que se muestre el resultado en la ventana de consola.

Es decir tu método combinacion3 debe incluir antes de la instrucción return...  una línea como la siguiente:
   System.out.println(combinacion3);
Y entonces tu instrucción
    cadenas31.combinacion3("Julio","Cesar","Flores");
en el área CodePad te mostrará un mensaje por consola.

Saludos

163
Hola vgrisales

La clase Math con métodos para realizar cálculos de la más diversa índole, se usa tanto en Java, que como ves, no hay que importarla. Ya lo hace Java de forma automática.

Ejercicio correcto

Saludos

164
Hola MrClassic

OK. Es poca cosa, pero la salida no parece tan escuálida.

Saludos

165
Hola MrClassic

Citar
otra cosa que note es que en el metodo static se tienen que declarar las variables dentro del metodo y no de manera global en cabezera, al igual que cambiar el metodo capturaStr de private a public para que pueda ser leido por el main();

Todo método puede declarar las variables que va a utilizar. También se pueden declarar en el encabezado de la clase (como campos o atributos de la clase). Pero si los va a utilizar un método estático, deben declararse estáticos también esos campos/atributos.
Es nuestra elección si deben ser variables internas y exclusivas del método, o deben ser visibles a toda la clase.

Tu clase funcionará igual si el método capturaStr es private. Otra cosa, es que tu quieras que sea visible porque lo vas a llamar desde otra clase. Como private solo lo pueden usar los métodos de la propia clase CapturaDatos.

-----
Tu ejercicio incorpora la gestión de entradas vacías, Bien.
Pero hay dos cosas a mejorar:


Cuando ejecutas el método lee() de la clase CapturaDatos, tienes estas dos instrucciones:
a)       String texto = capturaStr();
b)        texto = capturaStr();
La primera captura de texto -a)- la descartas (no la gestionas) y la segunda, la -b)- sí la gestionas.

No sé que propósito tiene pedir una entrada que no se gestiona. Tu petición de texto a ingresar, ahora funciona así:
Primero un ENTER con o sin texto previo, luego el texto a gestionar y al final un ENTER

Si quieres que tus entradas de texto tengan esta estructura, deberías anunciarlo para no dar lugar a equívocos.

A mi parecer la instrucción a) estaría bien inicializarla de otra manera como:
a)       String texto = "";
a)       String texto = "                  ";
a)       String texto = "Texto temporal";
Es igual el texto que pongas, pues será reemplazado por la instrucción b), que pide una entrada de texto por teclado para gestionarla después.


En el método main tienes una variable:
    entradaResultado
que no utilizas para nada, se habrá quedado de otra línea de código.

Y las siguientes instrucciones:
     CapturaDatos entrada;
     entrada = new CapturaDatos();
     entradaDatos = entrada.lee();
pueden sustituirse las tres, por la siguiente:
     entradaDatos = CapturaDatos.lee();

Esto --CapturaDatos.lee();-- se puede hacer porque el método lee() es estático.

Si comprendes lo expuesto, no hace falta que envíes de nuevo el ejercicio, excepto que me haya dejado algo sin responder.

Saludos

166
Hola adrianpza

En primer lugar te pongo un enlace que te muestra ¿Cómo insertar código en el foro?
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

El curso no tiene fecha de inicio ni fin. Puedes seguirlo a la velocidad que quieras. España devuelve el saludo.

Tu código es operativo al 100%

Una cosa a destacar. Informas al usuario de cómo debe introducir el texto. Así sabe por donde debe ir. Bien.

Otra cosa. Cuando una palabra es más larga que la otra. Tu código no tiene constancia de cual es esa palabra para poder decir:
   La palabra 2 no tiene letra 6.
como se pide en el enunciado.
Tal vez no le has dado importancia. Pero así, podrás decir que tu código controla todo respecto de las dos palabras.

Saludos

167
Hola jotase

En tu imagen presentas un diagrama con las relaciones de uso y herencia entre las clases. Está bien.

Pero en el enunciado se pide un esquema como el de la imagen:

Donde incluyas campos y métodos comunes y específicos. No todos, pero si algunos.
No hace falta código.

Saludos

168
Hola jotase

Solución correcta. OK

Nota: Puedes hacer lo mismo sin dividir la clase:

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

Saludos

169
Hola MrClassic

Una clase sin problemas. OK

Puntilla: Habría quedado mejor como en el ejemplo de la lección.

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

Saludos

170
Hola MrClassic

La clase cumple el cometido respecto a la longitud de la cadena y al valor de la primera letra.

Para usos posteriores te apunto un método de la clase String:
    equalsIgnoreCase(cadenaTexto)
que no distingue entre mayúsculas y minúsculas.

Respecto a controlar las cadenas vacías. Te adjunto una clase con método estático.
Nota: Para usar un método estático, no se crea una instancia de la clase. Se usa directamente así:
    Clase.metodo();
Como el método pow() de la clase Math

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

public class Teclado {       
    /**
     * Espera una entrada de teclado excluyendo entradas vacias
     */
    public static String lee() {
        String texto = "";
        do {
            texto = escucha();
//             if (texto.length() == 0) {
//                 System.out.print("No ha ingresado datos validos.");
//             }
        } while(texto.length() == 0);
        return texto;
    }

    private static String escucha() {
        Scanner entrada = new Scanner(System.in);
        return entrada.nextLine();
    }
} // Fin de la clase Teclado

En tu main tendrás que hacer modificaciones y en algún lugar habrás de poner:
    entradaDatos = Teclado.lee();

Saludos

171
Hola MrClassic

Tu ejercicio está perfecto. OK

Muy bien el uso de this en el contructor sin parámetros.

Saludos

172
Hola MrClassic

Un constructor en una clase, has de mirarlo como un método especial de la clase que es ejecutado automáticamente al inicializar un objeto de dicha clase.

Hemos visto constructores de varios tipos
Vacíos. No hacen nada de nada
Sin parámetros. Inicializan a los valores por defecto
Con parámetros. Inicializan usando dichos parámetros.

Y también has visto un constructor que toma decisiones.

Yo no soy profesional. Pero asumo que mi constructor hará lo que yo necesite. Incluso me aventuro, a recopilar datos externos para inicializar según las necesidades de la aplicación.

No es común, pero no puede decirse que sea mala práctica.

Cuando un programador asume el solo la codificación de una aplicación, se impone él mismo sus propios límites, objetivos y demás.

Cuando el programador forma parte de un equipo que se reparte las tareas de crear la aplicación.
Es el equipo el que decide que cosas son obligatorias y que cosas son permisivas. Sin más.

Saludos

173
Hola MrClassic
Citar
al respecto comento; En alguno de los ejemplos aveces frustra que apesar de entender como se realizan, te sientes incapaz de dar con esa implementación por tu cuenta propia e incluso con gran dificultad de replicarlo de inmediato, por lo que pregunto.
¿es normal sentir en esta etapa de aprendizaje inicial esto? ¿como desarrollar esa capacidad de resolver de forma puntual y sencilla problemas que por cuenta propia resultaria en un codigo super extenso?

Esas impresiones que comentas, son normales. A todos nos ha pasado.
Al empezar descubrimos conceptos nuevos que no sabemos la importancia que pueden tener.
Y aunque al principio del aprendizaje nuestros pasos pueden dar algunos tumbos. Esos mismos tropiezos nos ayudan a enderezar el paso.
Con el tiempo y líneas de código veremos que además de la ruta que hemos emprendido, también hay colegas que usan otros caminos, que nos pueden convencer por alguna propiedad, que tiene valor para nosotros y la incorporamos a nuestro bagaje de programador.

Así que, no debes desanimarte. Estás en la ruta correcta.


En cuanto a tus respuestas al enunciado del ejercicio.
Todas correctas a, b y c.

Saludos

174
Hola MrClassic

Todo lo que expones es cierto al 100%.
Has entendido y respondes bien, desde tu punto de vista.

La única objeción, es a la respuesta que da el método (no constructor)
    CombinadoSiempre(String valor_texto1, String valor_texto2)

Este método responde con esta expresión:
    valor_texto1.substring (0,longitud_texto1)+" "+ valor_texto2.substring (0, longitud_texto2);

Donde se ve un espacio en blanco entre las dos cadenas, cuando tu al parecer no contabas con el espacio en blanco.
Supongo que al traspasar este código a tu ordenador, el espacio en blanco se perdió.

Así, a este método, si se le aportan dos cadenas vacías como parámetros, responde con una cadena de longitud 1 (un espacio en blanco, que puede ser difícil de ver)

Por mi parte, este tema del método CombinadoSiempre (por cierto, está mal bautizado, por convención debería llamarse combinadoSiempre) no debería necesitar más comentarios (excepto que se haya quedado algo en el tintero)

Saludos

175
Hola matru

Tus evaluaciones están todas bien menos una
Código: [Seleccionar]
    n) (A+B == 8) || (A-B == 6)
El operador OR (O) ||, evalúa las dos expresiones. Si una de ellas es verdadera, el conjunto es verdadero.
Para dar false, deben ser false las dos.

Para evitar la aparición de emoticonos en nuestras expresiones, colócalas dentro de las etiquetas de código.

Saludos

176
Hola matru

Tu ejercicio está bastante bien.

Declaración e inicialización de atributos muy bien.

En este ejercicio no se pedía informar del cambio de valor de los atributos en los métodos set.
Piensa que no es habitual que los métodos set presenten esa información. Su función es realizar el cambio y nada más.

Así pues, para este ejercicio, el método set que está perfecto, es el método setEdad, pues hace su trabajo sin más.

Y el método carculoMultiploEdad() está bien.
También cambiando el nombre a calculo... (esto le pasa a cualquiera cuando escribe deprisa. A mi por ejemplo)

En este método hay algo que deberías recomponer.
Para una edad de 23 por ejemplo, responde:
El médico ... 2años
Seguro que sabes como arreglarlo

Saludos

177
Hola fedegaray

Tu respuesta es correcta.

A la tercera pregunta se podía haber respondido
    funcion
y estaría también correcto. Sería incorrecto responder
    procedimiento

Está mejor
    mixto
Pues devuelve un valor como las funciones y además modifica algo como suelen hacer los procedimientos.

Saludos

178
Hola fedegaray

Tu clase está muy bien.
Dicen que cuando te cuesta descorchar la botella, el vino te sabe mejor.

Tu creación es efectiva.
Se puede quitar una línea de código sin desvirtuar su estructura.

Las dos líneas siguientes:
        Scanner entrada2 =new Scanner(System.in);
        palabra2 = entrada2.nextLine();
Se pueden sustituir por la siguiente:
        palabra2 = entrada1.nextLine();

Te ahorras la declaración de entrada2. Las entradas de teclado las has guardado en palabra1 y palabra2 y te basta un solo objeto de la clase Scanner

Saludos

179
Hola jotase

El ejercicio está muy bien.

Aplaudo tu investigación en el API de Java para formatear los números con la clase DecimalFormat. OK

Saludos

180
Hola fedegaray

Tu ejercicio está perfecto. Me remito pero, al ejercicio anterior respecto a la salida por consola poco vistosa.

A destacar. Tus comentarios en las líneas, todos correctos.

Saludos

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

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