Documente Academic
Documente Profesional
Documente Cultură
SOLUCIÓN
El uso de la clase Scanner es una de las mejores maneras de ingresar datos por
teclado en Java.
En resumen:
Ejemplo:
1. // Programa Java para leer datos de varios tipos usando la clase Scanner
2. import java.util.Scanner;
3.
4. public class ScannerDemo
5. {
6. public static void main(String[] args)
7. {
8. // Declarar el objeto e inicializar con
9. // el objeto de entrada estándar predefinido
10.
11. Scanner sc = new Scanner(System.in);
12.
13. // entrada de una cadena
14. String name = sc.nextLine();
15.
16. // entrada de un carácter
17. char gender = sc.next().charAt(0);
18.
19. // Entrada de datos numéricos
20. // byte, short y float
21. int age = sc.nextInt();
22. long mobileNo = sc.nextLong();
23. double average = sc.nextDouble();
24.
25. // Imprima los valores para verificar si la entrada
26. // fue obtenida correctamente.
27. System.out.println("Nombre: "+name);
28. System.out.println("Género: "+gender);
29. System.out.println("Edad: "+age);
30. System.out.println("Teléfono: "+mobileNo);
31. System.out.println("Promedio: "+average);
32. }
33. }
Entrada:
Alex
masculino
23
92578458
20
Salida:
Nombre: Alex
Género: m
Edad: 23
Teléfono: 92578458
Promedio: 20.0
Luego, verificamos si la entrada del Scanner es del tipo que queremos con la
ayuda de las funciones hasNextXYZ() donde XYZ es del tipo que nos interesa. La
función devuelve true (verdadero) si el scanner tiene un token de ese tipo, de lo
contrario es false (falso). Por ejemplo, en el siguiente código, hemos utilizado
hasNextInt(). Para verificar una cadena, usamos hasNextLine(). De manera
similar, para verificar si hay un solo carácter, usamos hasNext().CharAt(0).
Ejemplo:
1
2
3
4
5
6.0
Salida:
La media es: 3
En general, cada solicitud de lectura hecha de un Reader hace que se realice una
solicitud de lectura correspondiente del carácter subyacente o secuencia de bytes.
Este es el método clásico de Java para leer datos de entrada, introducido en JDK 1.0. Este método
se usa envolviendo System.in (flujo de entrada estándar) en un InputStreamReader que está
envuelto en un BufferedReader, podemos leer la entrada del usuario en la línea de comando.
×Lo bueno: La entrada está almacenada temporalmente para una lectura eficiente.
×Lo malo: El código de envoltura es difícil de recordar.
Ejemplo:
Javeros
Salida:
Javeros
×Nota: Para leer otros tipos, usamos funciones como Integer.parseInt(), Double.parseDouble().
Para leer valores múltiples, utilizamos split().
SOLUCION
La palabra clave “final” se usa en diferentes contextos. En primer lugar, final es un modificador
de no acceso aplicable solo a una variable, un método o una clase. A continuación, se muestran los
contextos diferentes en los que se utiliza final
Table de Contenido
Si la variable final es una referencia, esto significa que la variable no se puede volver a vincular
para hacer referencia a otro objeto, pero el estado interno del objeto apuntado por esa variable de
referencia se puede cambiar, es decir, puede agregar o eliminar elementos de la matriz final o
colección final.
Es una buena práctica representar las variables finales en mayúsculas, utilizando guiones bajos
para separar las palabras.
Ejemplos:
final int LIMITE=5;
final int LIMITE;
static final double PI = 3.141592653589793;
Debemos inicializar una variable final, de lo contrario el compilador emitirá un error en tiempo de
compilación. Una variable final solo se puede inicializar una vez, ya sea a través de un inicializador
o una declaración de asignación. Hay tres formas de inicializar una variable final:
1. Puede inicializar una variable final cuando se declara. Este enfoque es el más común. Una variable
final se llama variable final en blanco si no se inicializa en la declaración.
2. Se puede inicializar una variable final en blanco dentro del bloque inicializador de instancias o
dentro del constructor. Si tiene más de un constructor en tu clase, debe inicializarse en todos ellos,
de lo contrario se generará un error de tiempo de compilación.
3. Una variable estática final en blanco se puede inicializar dentro de un bloque estático.
La única diferencia entre una variable normal y una variable final es que podemos reasignar el
valor a una variable normal, pero no podemos cambiar el valor de una variable final una vez
asignada. Por lo tanto, las variables finales deben usarse solo para los valores que queremos
que permanezcan constantes durante la ejecución del programa.
Cuando una variable final es una referencia a un objeto, esta variable final se denomina variable
final de referencia. Por ejemplo, una variable final de StringBuffer se parece a:
Como sabes, una variable final no se puede reasignar. Pero en el caso de una variable final de
referencia, se puede cambiar el estado interno del objeto señalado por esa variable de referencia.
Tenga en cuenta que esto no es una reasignación. Esta propiedad de final se llama no-
transitividad. Para entender qué significa el estado interno del objeto, consulte el siguiente
ejemplo:
Java
JavadesdeCero
La propiedad no-transitividad también se aplica a las matrices, porque las matrices son objetos en
Java. Las matrices con palabra clave final también se llaman matrices finales.
20
Tenga en cuenta la diferencia entre las variables const de C++ y las variables final de Java.
Las variables const en C++ deben tener un valor cuando se declaran. Para las
variables final en Java, no es necesario como vemos en los ejemplos anteriores. A una
variable final se le puede asignar valor más adelante, pero solo una vez.
final dentro del bucle for-each: la declaración final en for-each es una declaración legal.
1
2
3
×Explicación: Dado que la variable i está fuera del alcance de cada iteración del bucle, en realidad
se vuelve a declarar cada iteración, lo que permite utilizar el mismo símbolo (es decir, i) para
representar múltiples variables.
2. Clases finales
Cuando una clase se declara con la palabra clave final, se denomina clase final. Una clase final no se
puede extender (heredar). Hay dos usos de una clase final:
Una es definitivamente evitar la herencia, ya que las clases finales no se pueden extender.
Por ejemplo, todas las clases Wrapper como Integer, Float, etc. son clases finales. No
podemos extenderlos.
1. final class A
2. {
3. // métodos y campos
4. }
5. // La siguiente clase es ilegal.
6. class B extends A
7. {
8. // COMPILACIÓN-ERROR!
9. }
El otro uso de final con clases es crear una clase inmutable como la clase
String predefinida. No puede hacer que una clase sea inmutable sin que sea definitiva.
3. Métodos finales
Cuando se declara un método con la palabra clave final, se denomina método final. Un método
final no puede ser anulado. La clase Object hace esto: varios de sus métodos son FINALES.
Debemos declarar los métodos con la palabra clave final para la cual necesitamos seguir la misma
implementación en todas las clases derivadas. El siguiente fragmento ilustra la palabra clave final
con un método:
1. class A
2. {
3. final void m1()
4. {
5. System.out.println("Este es un método final.");
6. }
7. }
8.
9. class B extends A
10. {
11. void m1()
12. {
13. // COMPILACIÓN-ERROR!
14. System.out.println("Ilegal!");
15. }
16. }
SOLUCION
GLOSARIO
PUBLIC: Es el modificador de acceso del método. Pueden ser public (cualquier clase
en cualquier paquete puede acceder al método). Este nivel de acceso permite a
acceder al elemento desde cualquier clase, independientemente de que esta
pertenezca o no al paquete en que se encuentra el elemento.
PROTECTED: Indica que los elementos sólo pueden ser accedidos desde su mismo
paquete y desde cualquier clase que extienda la clase en que se encuentra,
independientemente de si esta se encuentra en el mismo paquete o no. Este
modificador, como private, no tiene sentido a nivel de clases o interfaces no internas.
PACKAGE: Los paquetes son el mecanismo que usa Java para facilitar la
modularidad del código. Un paquete puede contener una o más definiciones de
interfaces y clases, distribuyéndose habitualmente como un archivo. Para utilizar
los elementos de un paquete es necesario importar este en el módulo de código en
curso, usando para ello la sentencia import.
La funcionalidad de una aplicación Java se implementa habitualmente en múltiples
clases, entre las que suelen existir distintas relaciones. Las clases se agrupan en
unidades de un nivel superior, los paquetes, que actúan como ámbitos de
contención de tipos. Cada módulo de código establece, mediante la palabra
clave package al inicio, a qué paquete pertenece. Como ya sabrás, con
la cláusula import cualquier módulo de código puede hacer referencia a tipos
definidos en otros paquetes.
BLOQUE TRY: En el bloque try se encuentran las instrucciones que pueden lanzar una
excepción.