Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

[Duda] Duda con la respuesta A considerada como correcta...

Hola y saludos a toda la comunidad. En este caso si eliminamos ambas expresiones 'double' a 'salario', el código si es compilado, luego el valor de 'salario' es 4200.0. Entonces el error sucedía porque se estaba declarando dos veces a la variable 'salario', con lo cual la respuesta correcta debería ser la C, ¿es así o no?, o ¿es por eso mismo que salario ya no existía para el 'print' ?...como que me estoy confundiendo... Anexo los pantallazos del código:

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

5 respuestas

Hola Orlando, espero que estés bien.

La variable salario es definida dentro de los bloques if y else y por lo tanto su alcance solo es local a estos bloques y no se puede acceder a ella fuera de ellos. En resumen, la respuesta correcta a la pregunta es la opción A: "El código ni siquiera se compila, porque fuera del bloque if / else la variable salario ya no existe."

Cuando se dice alcance local eso quiere decir que double salario = 4200.0; y double salario = 3800.0; son variables diferentes porque están dentro de sus bloques en este caso if y else y solo existen allí.

Si tienes alguna duda, no dejes de preguntar. ¡Estamos aquí para ayudarte!.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Hola Bruno, yo también deseo que te encuentres muy bien y te agradezco por responder a mi inquietud. Entonces cuénteme, así como compartí el código, la variable 'salario' NO está siendo definida, ni de forma local, ni de forma general, y en ese caso si se compila correctamente y nos muestra que el salario del empleado tiene un valor de 4200.0, porque 'fuePromovido' es verdadero, en caso contrario nos arrojaría que el salario del empleado es de 3800.0. Entonces esta situación se presta para confusiones y me sigue resultando un tanto compleja de entender, por favor te agradezco nuevamente cualquier respuesta y le quedo muy atento...

Hola Orlando,

¿Averiguaste de guardar el cambio antes de volver a compilar? ¿Podria postear aquí el código completo por favor?

Puedes lograr compartir haciendo clic en este botón y colocando tu código entre los acentos:

https://cdn1.gnarususercontent.com.br/6/409216/a3962870-1dd0-4f80-a135-54b482f9094a.png

Si tienes alguna duda, no dejes de preguntar. ¡Estamos aquí para ayudarte!.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios
solución!

Hola Bruno, le cuento que volví a realizar el ejercicio y con ello pude comprobar que la respuesta correcta si es la A. Extrañamente la vez pasada, quitando las dos expresiones 'double' y sin haber declarado la variable 'salario' de forma global, el código compilaba. Para esta ocasión la declaré antes del 'if' y dentro de él sin colocar el tipo 'double' para indicar la variable 'saldo' si compiló. Procedo a compartir el código:

public class TestSalario {
    public static void main(String[] args) {
        boolean fuePromovido = false;
        double salario;
        if (fuePromovido) {
            salario = 4200.0;
        } else {
            salario = 3800.0;
        }

        System.out.println("Su salario es: "+salario);
    }
}

Su salario es: 3800.0

Hola Orlando,

Así está correcto porque está declarando la variable antes del bloque if entonces ella está disponible en todo el programa. Debe haber alguna explicación para lo que pasó contigo, pero es difícil de entender ahora, que bueno que ya entendiste que esta es la forma correcta y creo que esto es lo más importante para evitar futuros errores.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios