Autor Tema: JavaScript JS error en suma encadena en lugar de sumar ejercicio curso CU01116E  (Leído 1527 veces)

Angeliyo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Buenas tardes. Mi consulta es relativa al ejercicio CU01116E del curso básico de programación web con JavaScript de aprenderaprogramar.

Adjunto mi labor , no sé porque en las 3 ultimas lineas , me resulta una encadenacion de los números (186) en vez de la suma(18 + 6),,he probado de tantas formas que ya perdí la cuenta, dejo la forma inicial que me pareció apropiada.
Por favor , agradeceria su ayuda , como siempre.
Muy amables.

Código: [Seleccionar]
<html>

<head>
    <title>Curso JavaScript aprenderaprogramar.com</title>
    <meta charset="utf-8">

    <script type="text/javascript">

        function mostrarMensaje1() {

            var adcon1, adcon2, adcon3;

            var cadenaTexto1; var cadenaTexto2; var cadenaTexto3; var espacioTxt = ' ';

            adcon1 = 3; adcon2 = 4; result = adcon1 + adcon2; alert('Ahora result vale ' + result);

            adcon1 = 'Amanecer'; adcon2 = ' cálido'; result = adcon1 + adcon2; alert('Ahora result vale ' + result);

            cadenaTexto1 = 'Tomate'; cadenaTexto2 = 'frito'; cadenaTexto3 = cadenaTexto1 + espacioTxt + cadenaTexto2;

            alert('La concatenación del texto es: \"' + cadenaTexto3 + '\"');

            var adcon3 = prompt("introduce un numero entero ");
            var adcon4 = prompt("introduce otro numero");
            var resto;
            alert('el resultado de dividir es : ' + (adcon3 % 5));
            var dividir;
            alert('division : ' + (adcon3 / adcon4));
            var suma;
            suma = adcon3 + adcon4 ;
            alert('la adiccion es  ' + suma);
           

        }

    </script>

</head>

<body>

    <div>

        <p>Aquí un párrafo de texto situado antes de la imagen, dentro de un div contenedor</p>

        <img onclick="mostrarMensaje1()" src="http://i.imgur.com/afC0L.jpg" alt="Notepad++"
            title="Notepad++, un útil editor de texto">

        <p onclick="alert('Alerta JavaScript')" style="background-color:yellow;">Aquí otro párrafo de texto. JavaScript
            es un lenguaje utilizado para dotar de efectos dinámicos a las páginas web.

        </p>

    </div>

</body>

</html>
« Última modificación: 19 de Junio 2022, 13:45 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: ejercicio del codigo CU01116E de JS,error en suma
« Respuesta #1 en: 26 de Abril 2022, 18:53 »
Hola.
Eso ocurre porque los prompt() te dan cadenas de caracteres:
Código: [Seleccionar]
            var adcon3 = prompt("introduce un numero entero ");
            var adcon4 = prompt("introduce otro numero");

Entonces, si luego con esas variables haces operaciones aritméticas con los operadores de división multiplicación, resta o módulo, dichos operadores trabajan únicamente con valores numéricos.
En ese caso, JS no tiene dudas de que pretendes hacer una operación matemática con ellos, así que él mismo convierte esas cadenas que te han dado los prompt a valores numéricos y hace una operación aritmética.

Sin embargo, el operador de suma aritmética, es el mismo que el de "concatenar" cadenas.
Aquí JS ya no puede deducir cuál es tu intención y lo que hace es "respetar" el tipo de dato original de las variables, que en este caso son cadenas, por eso te está haciendo una concatenación.

Puedes solucionarlo transformando tú mismo las cadenas a números, con la función Number()
Código: [Seleccionar]
            suma = Number(adcon3) + Number(adcon4) ;
            alert('la adiccion es  ' + suma);
De este modo, JS ya no tiene dudas de que tu deseo es hacer una suma aritmética
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

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