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 ... 3 4 5 6 7 [8] 9 10 11 12 13 ... 25
141
Gracias Alex por tu explicación detallada.

Entiendo que los desarrolladores son los que en el fondo deciden el comportamiento de su código.

Y que tal como dices, es nuestra responsabilidad aportar a los métodos los parámetros adecuados según su necesidad.

Saludos

142
Hola Dan_SB

En el texto de esta lección, encontrarás estas dos signaturas sobre un fondo gris.

    float calcularCapacidadDeposito ()

    float calcularCapacidadDeposito (float valorDiametro, float valorAltura)

Todo el texto alrededor de estas signaturas te hablan de que es y en que consiste una signatura. Solo tienes que estudiarlo. Y si hay algo que no entiendes, lo preguntas aquí y te ayudamos.

Saludos

143
Hola arcanFAC

Respuesta correcta. OK

Saludos y adelante.

144
Hola arcanFAC

Ejercicio perfecto. OK

Mi apunte para el código:
Las convenciones en Java (que no obligaciones) recomiendan bautizar las variables con nombres descriptivos y además empezar siempre con minúscula.
Así, las variables C y D del método calculoParaMultiploEdad() quedarían más inteligibles por ejemplo:
C -> moduloEdad
D -> diferenciaModulo

Algunas veces un código lo tienes que leer dos veces para entenderlo. Si además usamos nombres que no dicen nada, no ayudamos a la compresión.

Saludos

145
Hola arcanFAC

Tu ejercicio está perfecto de cabo a rabo. OK
Muy bien el if para cambiar el mensaje en el método setCasado

Saludos

146
Hola adrianpza
Muy buena observación. ¿Por qué en el get no hace falta y en el remove si.?

No estoy seguro. Pero aventuro lo siguiente:

El método remove utiliza un int (primitivo) para encontrar manipular/borrar el elementos en cuestión. Está diseñado internamente así. Espera un int si o si.

En cambio el get está diseñado internamente para 'devolver' el contenido del elemento. Una vez puede ser un Integer como es el caso, o un objeto de tipo Persona, o Rueda, etc. y devuelve objetos distintos según cada caso.
Pienso que este método (el get) lo han diseñado para adaptarse a cualquier tipo de objeto. Y eso cuenta con hacer conversiones como el caso actual de Integer a int que son compatibles,

Es decir
    tmpAL.get(i)
siempre devuelve un Integer
pero
    miListadoAL.get(...)
recibe un Integer que sabe convertir a int que es lo que necesita.

Desde aquí se podría decir. ¿Por qué no han preparado al método remove para que haga lo mismo? ...

Si alguien conoce una respuesta fidedigna, pido que nos ilumine en este desconocimiento.

Salud.

147
Hola Dan_SB

Antes de comentar tu clase DiscoMusical, quiero decirte lo siguiente:
Este ejercicio, no era práctico, (no había que construir ninguna clase), era un ejercicio de preguntas y respuestas.

En esta lección se trata del (Concepto de signatura en Java)
Tu tienes que construir 4 signaturas para los métodos del  1) al 4)   propuestos en el enunciado.
En la lección se explica que es una sigunatura de método y varios ejemplos de ello.
Ese era el trabajo de esta lección, y para pasar al siguiente tema, deberías tener este concepto claro.

----------
Dicho lo anterior, ahora comento tu código:

En primer lugar he de decirte que elogio tu dedicación en la confección de este programa. Se nota que tienes una idea de lo que vas a hacer, y te pones a ello.

Verás que avanzando en este curso, podrás crear una versión de tu programa de la que estarás orgulloso. Por ahora te faltan conceptos y algo de práctica que ganarás con los próximos ejercicios.

Pero, siempre hay un pero. Has construido tu programa con pequeñas deficiencias, teóricas y prácticas.

Aquí va una pequeña lista:

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

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

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

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

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

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


Final del mensaje.
Quisiera que intentes responder al enunciado del ejercicio, el de crear las signaturas.
Y en cuanto al programa, guárdalo. Verás que dentro de poco podrás presentar tu proyecto DiscoMusical eficiente al 100%

Saludos

148
Hola RaGa

Tu ejercicio está más que correcto. Enhorabuena.

Tus mensajes por consola aportan la información necesaria para entender los pasos del programa.

Y tienes razón, ahorras recursos al colocar en clase aparte el código para escanear el teclado. En este caso, después de usar el método leer(), la clase ha terminado su función y devuelve la memoria al sistema. OK

Saludos y adelante.

149
Hola Killer

Ejercicio correcto.

Solo se me hace raro ver el método combinacion sin la declaración de public.
Ya verás más adelante que si esta clase forma parte de un proyecto más grande con varios package (paquetes). Desde otro paquete no sería visible este método aunque si lo fuera la clase Fusion.

Saludos

150
Hola joseph

Cuando necesites hacer una consulta, pon un título descriptivo. Ayuda la necesitamos todos, de momento le hemos puesto un título genérico.

Te envío la clase con modificaciones para poder leer el archivo. He eliminado el código que no se utilizaba.
Código: [Seleccionar]
import java.text.DecimalFormat; //  needed for DecimalFormat class
import java.io.*;               // needed for file I/O classes

public class Program4
{
    public static void main(String[] args) throws IOException
    {

        // print my name to the screen
        System.out.println("Jose A. Pimentel");
        System.out.println();
       
        String fileName;    // to hold the file name
        String lineComp;    // to hold the name of company
        double compNum;     // to hold the number of shares
        double purchPrice;  // to hold the purchase price per shares
        double commPurch;   // to hold the purchase commission rate
        double salesPrice;  // to hold the sales price per share
        double commSales;   // to hold the sales commission

        fileName = "C:\\Pruebas\\StockData.txt";

        FileReader inputFile = new FileReader(fileName);
        BufferedReader buferArchivo = new BufferedReader(inputFile);
        String linea = buferArchivo.readLine(); // lee la proxima linea
        while(linea != null)  // minetras haya lineas en el archivo
        {
            if (linea.isEmpty()) { // salta las lineas vacias
                linea = buferArchivo.readLine();
                continue;
            }
            // assign every document data to a different variable
            String separador[] = linea.split(":");
            lineComp = separador[0];
            compNum = Double.parseDouble(separador[1]);
            purchPrice = Double.parseDouble(separador[2]);
            commPurch = Double.parseDouble(separador[3]);
            salesPrice = Double.parseDouble(separador[4]);
            commSales = Double.parseDouble(separador[5]);
           
            checkValidity(lineComp, compNum, purchPrice, commPurch, salesPrice, commSales);
            linea = buferArchivo.readLine();

        }
        buferArchivo.close();
    }
    public static void checkValidity(String company, double numOfShares, double purchPrice,
    double commissionP, double salesPrice, double commissionS)
    {

        DecimalFormat twoDecimals = new DecimalFormat("0.000");

        calcProfit(numOfShares, purchPrice, commissionP, salesPrice, commissionS);

        if (numOfShares <= 0)
        {

            System.out.print(company);
            System.out.println(" Number of shares invalid: " + twoDecimals.format(numOfShares));

        }
        if (purchPrice < 0)
        {

            System.out.print(company);
            System.out.println(" Purchase price invalid: " + twoDecimals.format(purchPrice));

        }
        if (salesPrice < 0)
        {

            System.out.print(company);
            System.out.println(" Sales price invalid: " + twoDecimals.format(salesPrice));

        }
        if(commissionP < 0 || commissionP > 0.20)
        {

            if(commissionS < 0 || commissionS > 0.20)
            {
                System.out.print(company);
                System.out.println(" Purchase commission percent invalid: " + twoDecimals.format(commissionP));
                System.out.print(company);
                System.out.println(" Sales commission percent invalid: " + twoDecimals.format(commissionS));
            }

        }
        else
        {

        }
    }
    public static double calcProfit(double numShares, double priceP, double commP, double priceS, double commS)
    {

        double commAmountP = 0;
        double commAmountS = 0;
        double totalP = 0;
        double totalS = 0;
        double totalAmount = 0;

        commAmountP = numShares * priceP * commP;
        commAmountS = numShares * priceS * commS;

        totalS = numShares * priceS - commAmountS;
        totalP = numShares * priceP + commAmountP;

        totalAmount = totalS - totalP;

        return totalAmount;

    }
}
Envío txt formateado para leer con el programa. Hay que colocar el archivo en la ruta designada.
Código: [Seleccionar]
Mi compañia:1200:1300:1400:150:-99
Tu compañia:1000:800:600:-500:33


Su compañia:1:2:3:4:5
A mi entender parece que sabes lo que quieres conseguir, pero no sabes como perdírselo a Java.
Siendo así, deberías hacer las consultas necesarias en la documentación de Java o seguir uno de nuestros cursos  para poder construir tus programas. Tal como te recomienda el compañero Jorge.

Un apunte: Si colocas todo el código en el main, cuando tu aplicación crezca, será difícil de controlar.

Saludos

151
Hola harol

Tu código siempre da 0 porque nunca llamas al método convertirNumero(...) para dar valor a la variable/atributo 'decimal'

Te envío una clase con main para hacer esa conversión.
Código: [Seleccionar]
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class BinarioADecimal {

    public static void main(String[] args)   {
        DecimalFormat df = new DecimalFormat("#,##0"); // formato de presentacion numeros decimales
        String entrada = JOptionPane.showInputDialog("Ingrese el numero binario que desee convertir a decimal:").trim();
        int numBits = entrada.length();
        if (entrada.charAt(0) == '-') numBits--;
       
        try {
            int valorDecimal = Integer.parseInt(entrada,2); // convierte String a numero en base 2
            JOptionPane.showMessageDialog(null,"El binario \"" + binaryFormat(entrada) + "\" (" + numBits +
                " digitos).\nEs el decimal: " + df.format(valorDecimal));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null,"Entrada recibida: \"" + entrada + "\" (" + entrada.length() + " caracteres)\n" +
                "Formato de número erróneo.\n" +
                "Solo se aceptan unos y ceros, sin espacios.\n" +
                "Se acepta un signo menos (-) solo a la izquierda.\n" +
                "El mayor binario para convertir en Integer es: 1111.1111.1111.1111.1111.1111.1111.1111 (31 bits)");
        }
    }

    private static String binaryFormat(String cad) { // formatea la presentacion del numero binario
        String salida = "";
        int cuarteto = 0;
        for (int i = cad.length()-1; i >=0 ; i--) {
            if (cuarteto++ % 4 == 0 && !salida.isEmpty()) {
                if(i == 0 && cad.charAt(0) == '-')  {  // nada
                } else { salida = "." + salida;}
            }
            salida = cad.charAt(i) + salida ;
        }
        return  salida;
    }
}

Saludos

152
Hola adrianpza

Si, tu código es compacto.

De las dos soluciones al ejercicio, está mejor la primera, de la que no hay nada que objetar.

En la segunda tienes esta línea:
      String mesSecreto = mes[aleatorio.nextInt(13)];
que te dará error cuando el nextInt coja el valor 12  (de 0 a 12) pues en tu array el valor máximo es 11 (de 0 a 11).

Además la línea anterior la colocas dentro del while, lo que provoca que cambia el mes secreto en cada bucle. Así puede darse el caso de que ni con 12 intentos ni con 120 aciertes el mes secreto.

Seguro que sabes como arreglarlo.

Saludos

153
Hola Danteco

Esta clase Motor, también está bien.
Con su método dimeSiElMotorEsParaAgua(). Perfecto

Saludos

154
Hola Danteco

Tu clase está muy bien.

Declaración e inicialización de atributos. Bien
Métodos set y get. Bien.
Método  dimeTipoMotor con switch. Bien

Ejercicio perfecto.

Saludos

155
Hola Danteco

No haces nada mal.
Para que te salga el mensaje de las dimensiones de la rueda, tienes que llamar al método 'comprobarDimensiones '. Igual que llamas a los métodos set para cambiar las dimensiones de la rueda

Por cierto en el apartado a) del enunciado se pide respecto al diámetro
Citar
Si es menor o igual a 1.4 pero mayor que 0.8 debe mostrarse por consola el mensaje "La rueda es para un vehículo mediano".
cuando en tu código usas una expresión 'mayor o igual a 0.8'

Y te falta incluir el código para cumplimentar el apartado b) respecto al grosor de la rueda.

Ah, y cuando se pide definir un constructor asignando valores por defecto a los atributos. Se refiere a que los String se inicializan con cadena vacía "", como has hecho en el atributo marca.

Saludos

156
Hola Killer

Tus métodos están bien. Lo único, es que debías incluirlos los dos en la clase miniCalculadoraEjemplo. Que como todas las clases, por convención debe empezar con mayúscula:
    MiniCalculadoraEjemplo

En cuanto a colocar la sentencia import para la clase Math, por poder, puedes hacerlo.
Pero por coherencia, si lo haces, deberías hacer lo mismo para las clases System, String, Boolean, Integer, etc...

Pero tal como tu dices, sería una redundancia.

Saludos

157
Hola neybran

Tu propuesta también está bien.

Si tenemos en cuenta que, lo que en la vida real llamamos Propiedades, en Java lo llamamos Atributos o Campos de Clase. Y lo que conocemos por Operaciones para Java son Métodos

Saludos

158
Hola Dan

Tu ejercicio está perfecto. OK

Apunte:
Si quieres incluir un main como has hecho en este ejercicio para probar los métodos set y get de la clase DiscoMusical.
Puedes hacerlo sin problema, pero no hace falta que en la clase con main incluyas todo el código de la clase del ejercicio.

En el uso normal de Java se crean proyectos con la clase que crea objetos (DiscoMusical) y la clase que incluye el main exclusivamente, desde donde se llaman los métodos del objeto (DiscoMusical). Esto se ve más adelante en el curso.

Saludos

159
Hola Dan

Ahora tu código está perfecto.

Saludos y adelante

160
Hola Killer

Tu ejercicio está muy bien.

Hemos creado un método que usa la potenciación como parte de sus cálculos. OK.

Saludos

Páginas: 1 ... 3 4 5 6 7 [8] 9 10 11 12 13 ... 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".