Problemas con proceso padre e hijo (contador de palabras y letras)
Publicado por marti (5 intervenciones) el 11/02/2016 22:58:28
Hola, estoy haciendo un programa con dos procesos para contar palabras, lineas y letras.
Hay dos procesos, padre e hijo. El padre recibe las frases por teclado y las envia al hijo, y el hijo calcula las palabras y devuelve el resultado al padre.
Padre:
Hijo:
Hay dos procesos, padre e hijo. El padre recibe las frases por teclado y las envia al hijo, y el hijo calcula las palabras y devuelve el resultado al padre.
Padre:
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
public class Principal {
public static void main(String[] args) {
String line = "";
try {
// Iniciamos el proceso hijo.
Process fill = new ProcessBuilder("java","-jar","files/Analitzador.jar").start();
// Iniciamos PrintStream.
PrintStream ps = new PrintStream(fill.getOutputStream());
// Iniciamos los buffers.
BufferedReader br = new BufferedReader(new InputStreamReader(fill.getInputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
// Leemos la linia que escribe el usuario por consola.
line = in.readLine();
while((line = br.readLine()) != null && (line = br.readLine()) != "final"){
// Enviem la ínia al fill.
ps.println(line);
// Refresquem el printStream.
ps.flush();
// Llegim la línia que escriu l'usuari per consola.
line = in.readLine();
}
// Enviem la línia al fill.
ps.println(line);
// Refresquem el printStream.
ps.flush();
// Si la linia no està buida entrem i imprimim el que el fill ens passi.
if ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("Error : " +e.getMessage());
}
}
}
Hijo:
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
public class Analitzador {
public static void main (String args[]) {
String input;
int contadorLletres = 0;
int contadorLinies = 0;
int contadorParaules = 0;
try{
// Iniciamos el Buffer.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
input = br.readLine();
while((input = br.readLine()) != null && (input = br.readLine()) != "final"){
contadorLinies++;
// Contamos las palabras.
StringTokenizer st = new StringTokenizer(input);
contadorParaules = st.countTokens();
// Bucle for que conta las letras
for(int x = 0; x < input.length(); x++) {
if (input.charAt(x) != ' ' && input.charAt(x) != '.' && input.charAt(x) != ','){
contadorLletres++;
}
}
}
System.out.println("Línies: " + contadorLinies + ", Paraules: " + contadorParaules + ", Lletres" + contadorLletres);
}catch(IOException io){
io.printStackTrace();
}
}
}
Valora esta pregunta
0