¡Buen día, coders! En esta oportunidad vamos a resolver una evaluación
continua que nos envió un seguidor de la página. Consta de 3 problemas,
Manejo de Patrones, Manejo de archivos y Patrones, Archivos y formatos,. Les
dejaré la solución a este examen y cualquier duda que tengan en la sección
de comentarios.
SEGUNDA EVALUACIÓN CONTINUA JAVA AVANZADO
Problema 1. Manejo de Patrones
Se pide validar mediante el empleo de patrones una cadena que supuestamente
contiene un email, lo hace con cuatro comprobaciones, con un patrón cada una,
la primera que no contenga como primer carácter una @, la segunda que no
comience por www. , que contenga una y solo una @ y la cuarta que no contenga
caracteres ilegales:
Solución:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Problema1 {
public static void main(String[] args) {
System.out.print("Ingresar correo: ");
Scanner scanner = new Scanner(System.in);
String source = scanner.next();
// 1ra comprobación: que no contenga como primer carácter una @
Pattern p = Pattern.compile("@|\\."); // Patrón de búsqueda
Matcher m = p.matcher(source); // Fuente de datos
if (m.find() && (m.start() == 0)) { // Si lo encontró en la 1ra posición
System.out.println("ERROR: No puede comenzar con @ o punto");
}
// o podemos hacerlo de esta forma
/*p = Pattern.compile("^\\.|^\\@");
m = p.matcher(source);
if (m.find()) {
System.out.println("ERROR: No puede comenzar con @ o punto");
}*/
// 2da comprobación: que no comience por www.
p = Pattern.compile("^www\\.");
Matcher m2 = p.matcher(source);
if (m2.find()) {
System.out.println("ERROR: No puede comenzar con www. ");
}
// 3ra comprobación: que contenga solo un arroba
p = Pattern.compile("@");
m = p.matcher(source);
int cont = 0;
while (m.find()) {
cont++;
}
if (cont > 1)
System.out.println("ERROR: Solo puede haber un @: " + cont);
// 4ta comprobación: que contenga arroba
p = Pattern.compile("@");
m = p.matcher(source);
if (!m.find()) {
System.out.println("ERROR: No se ha encontrado el @");
}
// 5ta comprobación: que no contenga caracteres ilegales
/*p = Pattern.compile("\\¿+|\\?+|\\°+|\\¬+|\\|+|\\!+|\\#+|\\$+|"
+ "\\%+|\\&+|\\+|\\=+|\\’+|\\¡+|\\++|\\*+|\\~+|\\[+|\\]"
+ "+|\\{+|\\}+|\\^+|\\<+|\\>+|\\\"+ ");
m = p.matcher(source);
cont = 0;
while (m.find()) {
System.out.println("Se encontró el caracter '" + m.group() +
"' en la posición " + m.start());
cont++;
}
if (cont > 0)
System.out.println("ERROR: Se hallaron " + cont +
" caracteres ilegales: " + cont);*/
// o podemos hacerlo de esta forma
p = Pattern.compile("[^A-Za-z0-9\\.@_\\-]");
m = p.matcher(source);
cont = 0;
while (m.find()) {
System.out.println("Se encontró el caracter '" + m.group() +
"' en la posición " + m.start());
cont++;
}
if (cont > 0)
System.out.println("ERROR: Se hallaron " + cont +
" caracteres ilegales: " + cont);
}
}
|
Resultado:
Ingresar correo: @www.jose#10%5/?@gmail.com
ERROR: No puede comenzar con @ o punto
ERROR: Solo puede haber un @: 2
Se encontró el caracter '#' en la posición 9
Se encontró el caracter '%' en la posición 12
Se encontró el caracter '/' en la posición 14
Se encontró el caracter '?' en la posición 15
ERROR: Se hallaron 4 caracteres ilegales: 4
Problema 2. Manejo de Archivos y Patrones
Realizar un motor de búsqueda que permita primero: mostrar el contenido del
archivo “texto.txt” y mostrar las veces que aparecen las palabras que
coincidan con el modelo ingresado por teclado en el documento. Ej.
texto.txt
LOS DEBERES
###########
Mucho hemos escuchado sobre los derechos, sin embargo, poco escuchamos sobre nuestros deberes.
Básicamente los deberes son lo que debemos hacer para cumplir y respetar los derechos propios y de los demás (¡Yo debo hacer!). Así los derechos de nosotros terminan donde comienzan los de los demás.
La frase, trata a los demás como quieres que te traten, es un ejemplo de deber y derecho.
&&&&&&&&&&&
www.google.com
www.youtube.com
www.facebook.com
%%%%%%%%%%%
hola@gmail.com
amigos@gmail.com
dia@gmail.com
@@@@@@@@@@@
147852369
Solución:
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
39
40
41
42
43
44
45
46
47
48
49 | import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
public class Problema2 {
public static void main(String[] args) {
File file = new File("texto.txt");
String ingresar = JOptionPane.showInputDialog("Patrón de texto a buscar");
String lineaTot = "";
try {
// Lee el archivo y guarda el contenido en un String
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String linea;
System.out.println("Contenido del archivo:");
while ((linea = br.readLine()) != null) {
System.out.println(linea);
lineaTot += linea;
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("+---------------------------+");
System.out.println("| Búsqueda de Texto |");
System.out.println("+---------------------------+");
System.out.println("Patrón de texto a buscar: " + ingresar);
Pattern p = Pattern.compile(ingresar); // el patrón (expresión)
Matcher m = p.matcher(lineaTot); // la fuente de datos
boolean b = false;
int cont = 0;
while (m.find()) { // si lo encuentra
// imprimo
System.out.println("Encontrado en la posición " + m.start() + ": "
+ m.group());
cont++;
}
System.out.println("Encontrado: \"" + cont + "\" veces"); // total
}
}
|
Resultado:
Contenido del archivo:
LOS DEBERES
###########
Mucho hemos escuchado sobre los derechos, sin embargo, poco escuchamos sobre
nuestros deberes.
Básicamente los deberes son lo que debemos hacer para cumplir y respetar los
derechos propios y de los demás (¡Yo debo hacer!). Así los derechos de
nosotros terminan donde comienzan los de los demás.
La frase, trata a los demás como quieres que te traten, es un ejemplo de
deber y derecho.
&&&&&&&&&&&
www.google.com
www.youtube.com
www.facebook.com
%%%%%%%%%%%
hola@gmail.com
amigos@gmail.com
dia@gmail.com
@@@@@@@@@@@
147852369
+---------------------------+
| Búsqueda de Texto |
+---------------------------+
Patrón de texto a buscar: [0-9]
Encontrado en la posición 525: 1
Encontrado en la posición 526: 4
Encontrado en la posición 527: 7
Encontrado en la posición 528: 8
Encontrado en la posición 529: 5
Encontrado en la posición 530: 2
Encontrado en la posición 531: 3
Encontrado en la posición 532: 6
Encontrado en la posición 533: 9
Encontrado: "9" veces
Problema 3. Archivos y Formatos
Se pide recuperar la información de la base de datos “cursos.txt” y
almacenar el contenido en una matriz (Arreglo Bidimensional) de tamaño [10]
[4]. Mostrar el contenido de la Matriz empleando el método Ventana.
Considerar que la información original de los campos 2 y 3 de la matriz está en configuración regional de Perú, se pide que la información a mostrar se personalice con el Local de Estados unidos (en, US), tanto para el Formato de Fecha (DateFormat.getDateInstance(…) ), como para el Formato de Moneda (NumberFormat.getCurrencyInstance(región)). De manera que la ventana muestre una tabla de la siguiente manera:
curso.txt
1,MySQL,12/07/2020,20
2,MySQL,13/07/2020,40
3,JDBC,14/07/2020,20
4,GUI,15/07/2020,20
5,Proyecto,16/07/2020,30
Resultado:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 | import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Problema3 {
public static void main(String[] args) {
File file = new File("cursos.txt");
String[][] matriz = new String[10][4];
try {
// Leemos el contenido del archivo .txt
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String linea = "";
int i = 0;
while ((linea = br.readLine()) != null) {
// Delimitamos la fila por ','
StringTokenizer st = new StringTokenizer(linea, ",");
// Guardamos los tokens en el arreglo
matriz[i][0] = st.nextToken(); // Sesión
matriz[i][1] = st.nextToken(); // Tema
matriz[i][2] = cambiarFormatoDeFecha(st.nextToken()); // Fecha
matriz[i][3] = cambiarFormatoDeMoneda(st.nextToken()); // Costo
i++;
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
ventana(matriz);
}
public static String cambiarFormatoDeFecha(String fecha) {
// String a Date
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date fechaDate = null;
try {
fechaDate = sdf.parse(fecha);
System.out.println("Fecha Date: " + fechaDate);
} catch (ParseException ex) {
System.out.println(ex);
}
// Date a String
Locale locales2[] = { new Locale("en", "US") };
DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, locales2[0]);
String fechaUSA = df.format(fechaDate);
System.out.println("Formato de fecha EE.UU: " + fechaUSA);
return fechaUSA;
}
public static String cambiarFormatoDeMoneda(String costo) {
Locale locale[] = { new Locale("en", "US") };
NumberFormat nf = NumberFormat.getCurrencyInstance(locale[0]);
String moneda = nf.format(Double.parseDouble(costo));
System.out.println("formato de moneda EE.UU: " + moneda);
return moneda;
}
private static void ventana(String[][] datos) {
final String[] nombreCol = { "Sesion", "Tema", "Fecha", "Costo" };
JTable tabla = new JTable(datos, nombreCol);
tabla.setFont(new Font("Arial", Font.BOLD, 18));
tabla.setRowHeight(24);
JScrollPane jsp = new JScrollPane(tabla);
JFrame frame = new JFrame();
Container c = frame.getContentPane();
c.setLayout(new BorderLayout());
c.add(jsp, BorderLayout.CENTER);
frame.setSize(500, 300);
frame.setVisible(true);
}
}
|
DESARROLLO TUS ALGORITMOS 🔥🔥
✅ 1. Envía tu algoritmo.
✅ 2. Indica en qué lenguaje de Programación lo deseas.
✅ 3. Para qué fecha lo quieres.
✅ 4. De que país eres (para tu forma de pago)
✅ 5. También se desarrollan al momento.
✅ 6. Los 3 primeros ejercicios son gratis.
🔸 Explico cada ejercicio que desarrollo en el código.
Cuenta Dcoder para más ejercicios de programación
Blog para novedades de programación
Tienda online para más recursos de programación