Está en la página 1de 7

Practica Profesionalizante I

Profesor Diaz Gonzalo

Clase scanner en Java

Java tiene un método llamado System.in, la cual obtiene la información de usuario.


Sin embargo, Sytem.in no es tan simple como System.out. La razón porque no es
tan fácil es porque System.in solo lee la información en bytes. Bytes no nos sirve
de mucho ya que los programas usualmente trabajan con valores de otro tipo
(integrales, Strings, bool, etc.). Para solucionar este problema usamos la clase
Scanner. La clase Scanner está diseñado para leer los bytes y convertirlo envalores
primitivos (int, double, bool, etc.) o en valores String.
A continuación, se detalla el funcionamiento de esta clase:

Primero tiene que crear un objeto Scanner y conectarlo con System.in


Scanner teclado = new Scanner(System.in);
Veamos este código por partes. La primera parte:
Scanner teclado
Este código declara una variable llamado teclado. El tipo de data de esta variable
es Scanner. Ya que Scanner es una clase, la variable teclado es un objeto de la
clase Scanner.
La segunda parte:

= new Scanner(System.in);

Lo primero que vemos es el símbolo =, lo cual esta asignando un valor a la variable


teclado. El valor es Scanner(System.in) que en palabras comunes está diciendo
que el valor de teclado es lo que System.in tenga. O sea, cuando un usuario
presiona una tecla, la computadora convierte esta información en bytes. Estos bytes
son guardados en el objeto System.in, y por último son asignados a la variable
teclado. Después del símbolo = vemos la palabra clave new lo cual crea un nuevo
objeto en la memoria, el tipo de objeto que creara es Scanner(System.in),
básicamente está reservando memoria en la computadora para que se pueda
guardar la información de System.in.
A continuación, el siguiente ejemplo para dar más claridad:

int edad;
Scanner teclado = new Scanner(System.in);
System.out.println(“Que edad tienes”);
edad = teclado.nextInt();

1
Practica Profesionalizante I
Profesor Diaz Gonzalo
Veamos paso a paso que es lo que significa cada línea:

int edad:

Estamos declarando una variable int llamada edad la cual va a almacenar un


número.
Scanner teclado = new Scanner(System.in);

Estamos declarando una variable Scanner, la cual va almacenar la información que


el usuario introduce.
System.out.println(“Cuál es tu edad”);

Estamos usando el método println para preguntar al usuario por su edad.


edad = teclado.nextInt();

Estamos usando la variable teclado para obtener la información del usuario, luego
convertimos los bytes en int con el método nextInt, y por último estamos pasando
el valor int a la variable edad
Existen varios métodos de la clase Scanner para convertir bytes en valores que
sean más útiles. Siguiente voy a mostrar una lista de los métodos más comunes de
la clase Scanner para convertir bytes en otros valores.
Métodos:
nextByte
nextDouble
nextFloat
nextInt
nextLine
nextLong

La mayoría de estos métodos se sobre entienden. Hay 2 que necesitan un poco


más de explicación. El método nextByte no significa que va a reconvertir la
información en bytes, sino que va a transformar la información en el valor byte la
cual puede ser un número del -128 al +127

2
Practica Profesionalizante I
Profesor Diaz Gonzalo
Condiciones compuestas con operadores lógicos

Lógicos (&&, ||).

Operador &&

¿Traducido se lo lee cómo? ¿Y? Si la Condición 1 es verdadera Y la condición 2


es verdadera luego ejecutar la rama del verdadero.
¿Cuándo vinculamos dos o más condiciones con el operador? &&?, las dos
condiciones deben ser verdaderas para que el resultado de la condición compuesta
de Verdadero y continúe por la rama del verdadero de la estructura condicional.
La utilización de operadores lógicos permite en muchos casos plantear algoritmos
más cortos y comprensibles.

Problema:
Confeccionar un programa que lea por teclado tres números distintos y nos muestre
el mayor.

Diagrama de flujo:
Practica Profesionalizante I
Profesor Diaz Gonzalo
La primera estructura condicional es una ESTRUCTURA CONDICIONAL
COMPUESTA con una CONDICION COMPUESTA.
Podemos leerla de la siguiente forma:
Si el contenido de la variable num1 es mayor al contenido de la variable num2 Y si
el contenido de la variable num1 es mayor al contenido de la variable num3
entonces la CONDICION COMPUESTA resulta Verdadera.
Si una de las condiciones simples da falso la CONDICION COMPUESTA da Falso
y continua por la rama del falso.
Es decir que se mostrará el contenido de num1 si y sólo si num1>num2 y
num1>num3.
En caso de ser Falsa la condición, analizamos el contenido de num2 y num3 para
ver cual tiene un valor mayor.
En esta segunda estructura condicional no se requieren operadores lógicos al haber
una condición simple.

Programa:

import java.util.Scanner;

public class CondicionesCompuestas1 {


public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int num1,num2,num3;
System.out.print("Ingrese primer
valor:");
num1=teclado.nextInt();
System.out.print("Ingrese segundo
valor:");
num2=teclado.nextInt();
System.out.print("Ingrese tercer
valor:");
num3=teclado.nextInt();
if (num1>num2 && num1>num3) {
System.out.print(num1);
} else {
if (num2>num3) {
System.out.print(num2);
}else {
System.out.print(num3);
}
}

4
Practica Profesionalizante I
Profesor Diaz Gonzalo
}
}

Operador ||

¿Traducido se lo lee cómo? ¿O? Si la condición 1 es Verdadera O la condición 2 es


Verdadera, luego ejecutar la rama del Verdadero.
¿Cuándo vinculamos dos o más condiciones con el operador? Or", con que una de
las dos condiciones sea Verdadera alcanza para que el resultado de la condición
compuesta sea Verdadero.

Problema:

Se carga una fecha (día, mes y año) por teclado. Mostrar un mensaje si corresponde
al primer trimestre del año (enero, febrero o marzo) Cargar por teclado el valor
numérico del día, mes y año.

Ejemplo: dia:10 mes:1 año:2010.

5
Practica Profesionalizante I
Profesor Diaz Gonzalo
Diagrama de flujo:

La carga de una fecha se hace por partes, ingresamos las variables día, mes y año.
Mostramos el mensaje "Corresponde al primer trimestre" en caso que el mes
ingresado por teclado sea igual a 1, 2 ó 3.

En la condición no participan las variables día y año.

Programa:

import java.util.Scanner;

public class CondicionesCompuestas2 {


public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int dia,mes,año;
System.out.print("Ingrese nro de día:");
dia=teclado.nextInt();
System.out.print("Ingrese nro de mes:");

6
Practica Profesionalizante I
Profesor Diaz Gonzalo
mes=teclado.nextInt();
System.out.print("Ingrese nro de año:");
año=teclado.nextInt();
if (mes==1 || mes==2 || mes==3) {
System.out.print("Corresponde al
primer trimestre");
}
}
}

Problemas propuestos
1. Realizar un programa que pida cargar una fecha cualquiera, luego verificar si dicha
fecha corresponde a Navidad.
2. Se ingresan por teclado tres números, si todos los valores ingresados son menores a
10, imprimir en pantalla la leyenda "Todos los números son menores a diez". O “NO
TODOS SON MENORES A DIEZ”
3. De un operario se conoce su sueldo y los años de antigüedad. Se pide confeccionar un
programa que lea los datos de entrada e informe:
a) Si el sueldo es inferior a $5000 y su antigüedad es igual o superior a 10 años,
otorgarle un aumento del 20 %, mostrar el sueldo a pagar.
b) Si el sueldo es inferior a $5000 pero su antigüedad es menor a 10 años, otorgarle un
aumento de 5 %.

c) Si el sueldo es mayor o igual a $5000 mostrar el sueldo en pantalla sin cambios.

También podría gustarte