-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLineasRepetidasClase.java
56 lines (50 loc) · 1.67 KB
/
LineasRepetidasClase.java
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
package es.upm.dit.adsw.g23.clases.tema01;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
/**
* Implementación (incompleta y con error) de LineasRepetidas hecha en clase
* Se debe encontrar el fallo.
*/
public class LineasRepetidasClase {
public static int contarRepetidas(String[] lineas) {
int repetidas = 0;
for(int i =0; i < lineas.length; i++) {
String linea = lineas[i];
for(int j=0; j<i; j++) {
String otra = lineas[j];
if(linea.equals(otra)) {
repetidas += 1;
break;
}
}
}
return repetidas;
}
/**
* Estamos usando String[] en lugar de List<String> porque es la decisión que tomamos en clase.
* El problema de utilizar un array es que hay que conocer su tamaño de antemano. Por ello, en esta
* solución lo que hacemos es primero crear una lista, y luego la convertimos en un array.
*
* En un código real, usaríamos directamente List<String>. De ahí que lo usemos en el resto de clases.
*
*/
public static String[] leerLineas(String filename) throws IOException {
List<String> list = Files.readAllLines(Paths.get(filename), Charset.defaultCharset());
String[] array = new String[list.size()];
list.toArray(array);
return array;
}
public static void main(String[] args) throws IOException {
String[] lineas = leerLineas("data/enviosClase.txt");
// System.out.println("# de líneas " + lineas.length);
int repetidas = contarRepetidas(lineas);
System.out.println("Resultado de contar: " + repetidas + " y esperaba 2");
}
}