Hacer clase IteradorPrimos a partir de un TEST
Publicado por Juan José (20 intervenciones) el 03/03/2019 16:25:22
Buenas, necesito saber por què el método next() me devuelve números que no son primos.
El fallo lo encuentro en public void testNext().
Una ayuda por favor
La cosa es que sí me devuelve el primero, pero en el segundo me devuelve un 4 en lugar del 5.
Aqui la CLASE
Aqui el TEST
El fallo lo encuentro en public void testNext().
Una ayuda por favor
La cosa es que sí me devuelve el primero, pero en el segundo me devuelve un 4 en lugar del 5.
Aqui la CLASE
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
package org.mp.sesion02;
import java.util.ArrayList;
import java.util.Iterator;
public class IteradorPrimos<E> implements Iterator<Integer> {
private int limite = 0;
private int actual = 2;
ArrayList<String> numerosPrimos = new ArrayList<String>();
public IteradorPrimos(int limite) {
this.limite = limite;
}
public int getLimite() {
return limite;
}
public int getActual() {
return actual;
}
public static boolean esPrimo(int numero) {
boolean primoActual = true;
if (numero < 2) {
primoActual = false;
} else {
for (int x = 2; x * x <= numero; x++) {
if (numero % x == 0) {
primoActual = false;
break;
}
}
}
return primoActual;
}
// Interfaz Iterator
@Override
public Integer next() {
int numero = this.actual++;
if (numero <= this.limite) {
return numero;
} else {
throw new UnsupportedOperationException("Método no soportado");
}
}
@Override
public boolean hasNext() {
int numero = this.actual++;
if (numero >= this.limite)
return false;
else
return true;
}
public String mostrarPrimos() {
String cadena = "";
int contador = 0;
for (int i = 2; i <= this.limite; i++) {
if (esPrimo(i)) {
cadena += "\t" + i;
contador++;
}
if (contador >= 10) {
contador = 0;
cadena += "\n";
}
}
return cadena;
}
@Override
public void remove() {
throw new UnsupportedOperationException("Método no soportado");
}
}
Aqui el TEST
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package org.mp.sesion02;
import static org.junit.Assert.*;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.junit.Before;
import org.junit.Test;
public class TestIteradorPrimos{
private Iterator<Integer> iteradorPrimos;
@Before
public void setUp() throws Exception {
}
@Test
public void testPropiedades() {
iteradorPrimos = new IteradorPrimos(10);
assertEquals(10, ((IteradorPrimos)iteradorPrimos).getLimite());
assertEquals(2, ((IteradorPrimos) iteradorPrimos).getActual());
}
@Test
public void testEsPrimo() {
assertEquals(true,IteradorPrimos.esPrimo(2));
assertEquals(true,IteradorPrimos.esPrimo(5));
assertEquals(false,IteradorPrimos.esPrimo(9));
assertEquals(false,IteradorPrimos.esPrimo(4));
}
@Test
public void testNext() {
iteradorPrimos = new IteradorPrimos(10);
Integer actual = iteradorPrimos.next();
assertEquals(new Integer(2), actual);
assertEquals(new Integer(3), iteradorPrimos.next());
assertEquals(new Integer(5), iteradorPrimos.next());
assertEquals(new Integer(7), iteradorPrimos.next());
try {
assertEquals(new Integer(11), iteradorPrimos.next());
fail("DeberÃa haber lanzado una excepción");
} catch (NoSuchElementException e) {
assertEquals(e.getMessage(), "No se puede acceder a más números primos");
}
}
@Test
public void testHasNext() {
iteradorPrimos = new IteradorPrimos(10);
for (int i = 1; i <= 4; i++) {
assertEquals(true, iteradorPrimos.hasNext());
iteradorPrimos.next();
}
assertEquals(false,iteradorPrimos.hasNext());
}
@Test
public void testRemove() {
iteradorPrimos = new IteradorPrimos(10);
try {
iteradorPrimos.remove();
fail("DeberÃa haber lanzado una excepción");
} catch (UnsupportedOperationException e) {
assertEquals(e.getMessage(), "Método no soportado");
}
}
@Test
public void testMostrarPrimos() {
String cadenaGenerada, cadena;
iteradorPrimos = new IteradorPrimos(1);
cadenaGenerada = ((IteradorPrimos) iteradorPrimos).mostrarPrimos();
cadena = "";
assertEquals(cadenaGenerada, cadena);
iteradorPrimos = new IteradorPrimos(10);
cadenaGenerada = ((IteradorPrimos) iteradorPrimos).mostrarPrimos();
cadena = "\t" + 2 + "\t" + 3 + "\t" + 5 + "\t" + 7;
assertEquals(cadenaGenerada, cadena);
iteradorPrimos = new IteradorPrimos(17);
cadenaGenerada = ((IteradorPrimos) iteradorPrimos).mostrarPrimos();
cadena = "\t" + 2 + "\t" + 3 + "\t" + 5 + "\t" + 7 + "\t" + +11 + "\t" + 13 + "\t" + 17;
assertEquals(cadenaGenerada, cadena);
iteradorPrimos = new IteradorPrimos(20);
cadenaGenerada = ((IteradorPrimos) iteradorPrimos).mostrarPrimos();
cadena = "\t" + 2 + "\t" + 3 + "\t" + 5 + "\t" + 7 + "\t" + +11 + "\t" + 13 + "\t" + 17 + "\t" + 19;
assertEquals(cadenaGenerada, cadena);
iteradorPrimos = new IteradorPrimos(70);
cadenaGenerada = ((IteradorPrimos) iteradorPrimos).mostrarPrimos();
cadena = "\t" + 2 + "\t" + 3 + "\t" + 5 + "\t" + 7 + "\t" + 11 + "\t" + 13 + "\t" + 17 + "\t" + 19 + "\t" + 23
+ "\t" + 29 + "\n" + "\t" + 31 + "\t" + 37 + "\t" + 41 + "\t" + 43 + "\t" + 47 + "\t" + 53 + "\t" + 59
+ "\t" + 61 + "\t" + 67;
assertEquals(cadenaGenerada, cadena);
}
}
Valora esta pregunta
0