Java - Problemas con proceso padre e hijo (contador de palabras y letras)

   
Vista:
Imágen de perfil de marti

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder