En esta ocasión, te propongo algunos ejercicios básicos para practicar con las funciones de entrada y salida en Java. Si necesitas revisar el funcionamiento de estas estructuras, puedes consultar el post “Funciones de entrada y salida en Java”.

Existen varias soluciones posibles para resolver un mismo problema, unas más eficientes que otras. Aquí podéis ver una solución posible para cada ejercicio propuesto.

Ejercicio 1

Desarrolla un programa java que pida al usuario que introduzca un número entero que este entre 1 y 9. Y dibuja por pantalla la tabla de multiplicar de dicho número.

No es necesario que el programa comprueba si el número introducido está dentro del rango admitido.

Una posible solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

import java.util.Scanner;

public class ProbandoScanner {

 

    public static void main(String[] args) {

        Scanner sc1 = new Scanner(System.in);

        System.out.println(«Por favor, introduce un numero entre 1 y 9»);

        int num = sc1.nextInt();

        for (int i=1;i<10;i++){

            System.out.println(num+» x «+i+» = «+num*i);

        }

    }

}

 

Ejercicio 2

Escribe un programa Java que pida al usuario que introduzca una password numérica, de valor comprendido entre 0 y 999 (no es necesario comprobar que el valor introducido por el usuario está en dicho rango, se supone que el usuario lo hace bien).

El programa tiene almacenado el valor de la password correcta en una variable llamada key (hardcodeada).

El objetivo del usuario es introducir la password correcta, en cuyo caso el programa debe imprimir el mensaje: “acceso autorizado”.

El usuario tiene un máximo de 3 intentos para introducir la password correcta. Si el usuario falla en sus tres intentos, el programa presentará el mensaje de: “Ha excedido el número de intentos permitidos” y acaba el programa.

El máximo número de intentos permitidos lo guardamos en una variable tipo int, con su valor hardcodeado (=3).

Puedes usar las variables adicionales que estimes oportunas.

Un posible código solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import java.util.Scanner;

 

public class MasScanner {

    public static void main(String args[]) {

        int key=233;

        final int maxNumIntentos = 3;

        int intentos=0;

        boolean introduccionCorrecta = false;

        int contraseña;

       

        Scanner sc1= new Scanner(System.in);

       

        do {

            System.out.println(«Por favor, introduce tu contraseña (0-999)»);

            contraseña = sc1.nextInt();

            if (contraseña==key){

                System.out.println(«acceso autorizado»);

                introduccionCorrecta=true;

            }else {

                System.out.println(«contraseña incorrecta»);

                intentos++;

            }

           

        }while (!introduccionCorrecta && intentos<maxNumIntentos);

        if (intentos>=maxNumIntentos){

            System.out.println(«Ha excedido el número de intentos permitidos»);

        }

        sc1.close();

    }

}

 

Ejercicio 3

Desarrolla un programa que haga lo siguiente:

  • Pida al usuario que introduzca un número entre 1 y 1.000.
  • Pinte por pantalla todos los divisores exactos del número introducido.

Por ejemplo, si el número introducido fuera 170, el resultado por pantalla sería algo similar a:

Por favor, introduce un número entre 1 y 1000

170

El número 170 es divisible por 1

El número 170 es divisible por 2

El número 170 es divisible por 5

El número 170 es divisible por 10

El número 170 es divisible por 17

El número 170 es divisible por 34

El número 170 es divisible por 85

El número 170 es divisible por 170

Un posible código solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

import java.util.Scanner;

 

public class UsoScanner {

    public static void main(String[] args) {

        Scanner sc1= new Scanner(System.in);

        System.out.println(«Por favor, introduce un número entre 1 y 1000»);

        int numero = sc1.nextInt();

        for (int i=1; i<1001;i++){

            if (numero%i==0){

                System.out.println(«El número «+numero+» es divisible por «+i);

            }

        }

         sc1.close();

    }

}

 

Ejercicio 4

Escribe un programa Java que pida al usuario que introduzca los siguientes datos:

  • Su nombre (tipo String)
  • El año de su Nacimiento (tipo int)
  • Si tiene o no carnet de conducir (tipo boolean)

Si el usuario tiene 18 años o más, y tiene carnet de conducir, el programa tiene que pintar por pantalla un mensaje con el nombre del usuario y diciendo que está autorizado para conducir un coche. Para el resto de posibilidades, escribe el mensaje que estimes más oportuno.

Es muy conveniente, presentar por pantallas las preguntas adecuadas para que el usuario sepa que datos introducir.

Un posible código solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import java.util.Scanner;

 

public class CarnetConducir {

    public static void main(String args[]) {

        Scanner entrada1 = new Scanner (System.in);

        Scanner entrada2 = new Scanner (System.in);

        Scanner entrada3 = new Scanner (System.in);

        System.out.println(«Por favor, introduce tu nombre: «);

        String nombre = entrada1.nextLine();

        System.out.println(«Por favor, introduce el año en que naciste: «);

        int añoNacimiento = entrada2.nextInt();

        System.out.println(«Por favor, indica si tienes carnet de conducir: (true o false): «);

        boolean carnetConducir = entrada3.nextBoolean();

        int edad = 2020 – añoNacimiento;

        if (edad >17 && carnetConducir){

            System.out.println(«Enhorabuena «+nombre+» , estas autorizado para conducir un coche»);

        }else if (edad <18){

            System.out.println(«Lo siento, Eres demasiado joven para conducir»);

        }else if (!carnetConducir){

            System.out.println(«Necesitas sacarte el carnet de conducir»);

        }

        entrada1.close();

        entrada2.close();

        entrada3.close();

    }

}

Ejercicio 5

Desarrolla un programa java que pida al usuario que introduzca dos números enteros: la base y el exponente.

La base debe estar entre 1 y 10. El exponente entre 1 y 4.

El programa debe chequear que ambos valores están dentro de los rangos indicados. En caso de no estarlos, volver a pedir que se introduzcan ambos.

Al final el programa presentara en pantalla el resultado de la base elevada al exponente.

Un posible código solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import java.util.Scanner;

 

public class Exponente {

    public static void main(String args[]) {

        Scanner sc1 = new Scanner(System.in);

        Scanner sc2 = new Scanner (System.in);

        System.out.println(«Introduce la base: «);

        int base = sc1.nextInt();

        System.out.println(«Introduce el exponente: «);

        int exponente = sc2.nextInt();

        while (!(base>0 && base <11 && exponente>0 && exponente<5)){

            System.out.println(«Al menos uno de los valores está fuera de rango»);

            System.out.println(«Tienes que introducirlos de nuevo»);

            System.out.println(«Introduce la base: «);

            base = sc1.nextInt();

            System.out.println(«Introduce el exponente: «);

            exponente = sc2.nextInt();

        }

        System.out.println («Los valores introducidos están dentro de rango»);

        int resultado = 1;

        for (int i=0; i<exponente;i++){

                resultado = resultado * base;

        }

        System.out.println (base+ » elevado a «+exponente+» es igual a «+resultado);

        sc1.close(); sc2.close();

    }

}

 

Ejercicio 6

Escribe un programa Java que pida al usuario que introduzca una nueva password.

Para que la password sea segura debe tener 7 caracteres como mínimo. Si la longitud de la nueva password es menor de 7, el programa tiene que indicárselo al usuario y pedirle que introduzca otra que cumpla con el requerimiento, que tenga al menos 7 caracteres.

  • Para calcular la longitud de un String utiliza la función length().

Ejemplo. int longitud = string1.length();  la variable longitud será igual a la longitud de string1

Una vez introducida la nueva password cumpliendo los requerimientos anteriores, se le pide al usuario que la introduzca de nuevo. Entonces, el programa chequea si la password introducida coincide con la nueva password.

  • Para ver si dos Strings son iguales, utiliza la función equals.

Ejemplo:   string1.equals(string2)  será verdadero cuando los string1 sea igual a string2

Si ambas son iguales, se escribe por pantalla el mensaje : “contraseña cambiada correctamente”. Si son diferentes, hay que preguntar al usuario para que la introduzca de nuevo. El usuario dispone de 3 intentos para introducir correctamente la segunda password que tiene que ser igual a la introducida al principio.

Si el usuario falla tres veces seguidas en la introducción, el programa tiene que presentar por pantalla el mensaje: “Acceso no autorizado. Vuelva a intentarlo pasados 5 minutos” y terminar el programa.

Un posible ejemplo de resultado del programa sería:

Por favor, introduce una nueva password

La password debe tener 7 caracteres como minimo

hola

Por favor, introduce una nueva password

La password debe tener 7 caracteres como minimo

holahola

Por favor, introduce tu nueva password de nuevo

ho

La password que introduciste es diferente

Por favor, introduce tu nueva password de nuevo

holahola

Enhorabuena, acceso autorizado

 

Un posible código solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

import java.util.Scanner;

public class IntroducePassword {

 

    public static void main(String[] args) {

        Scanner sc1= new Scanner(System.in);

 

        String nuevaPassword;

        boolean passwordSegura = false;

        do{

            System.out.println(«Por favor, introduce una nueva password»);

            System.out.println(«La password debe tener 7 caracteres como minimo»);

            nuevaPassword= sc1.nextLine();

            if (nuevaPassword.length()>7){

                passwordSegura = true;

            }

        }while(!passwordSegura);

       

        String segundaNuevaPassword;

        boolean igual= false;

        int intentos = 0;

        do{

            System.out.println(«Por favor, introduce tu nueva password de nuevo»);

            segundaNuevaPassword= sc1.nextLine();

            intentos++;

            if (segundaNuevaPassword.equals(nuevaPassword)){

                igual = true;

                System.out.println(«Enhorabuena, acceso autorizado»);

            }else {

                System.out.println («La password que introduciste es diferente»);

            }

        }while(!igual && intentos<3);

        if (intentos==3){

            System.out.println(«Acceso no autorizado. Vuelva a intentarlo pasados 5 minutos»);

        }

        sc1.close();

    }

}

 

NOTA:

Este post es parte de la colección “Java” que reproduce los apuntes de la clase que imparto sobre el tema en ESIC. Puedes ver el índice de esta colección aquí.