Java - enlazar resultado de una aplicación como entrada de otra

 
Vista:
sin imagen de perfil
Val: 52
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

enlazar resultado de una aplicación como entrada de otra

Publicado por rodic (35 intervenciones) el 20/10/2020 23:25:30
Hola,

En una tarea debo utilizar el operador "|" (tubería) de forma que el resultado de la aplicación aleatoriosNumeros sea la entrada para la de ordenarNumeros.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class aleatoriosNumeros {
 
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            int aleatorio = 0;
            for (int i = 0; i < 40; ++i){
                aleatorio = (int) (Math.random()*100);
                System.out.println(aleatorio);
            }
        }
 
    }

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
public class ordenarNumeros {
 
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.print("Introduzca cuantos números quieres ingresar: ");
            int totNumeros = sc.nextInt();
            int[] numeros = new int[totNumeros];
            System.out.println("Introduzca " + totNumeros + " numero(s): ");
            for(int i = 0; i < num.length; i++){
            System.out.print("Numero " + (i+1) + ": ");
            numeros[i] = sc.nextInt();
            }
 
            Arrays.sort(num);
 
            System.out.println("\nLos numeros ordenados de menor a mayor son: ");
            for(int i = 0; i < numeros.length; i++){
            System.out.println(numeros[i]);
            }
        }
 
    }

Estoy utilizando comunicaciones con sockets pero no entiendo donde debo utilizar dicho operador "|". Lo mismo estoy complicándome y es algo mucho mas sencillo y una cosa no tiene nada que ver con la otra.

¿Sabríais decirme como se podría hacer ese "enlace" entre aplicaciones con dicho operador?

Muchas gracias!
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
Imágen de perfil de Rodrigo
Val: 1.977
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

enlazar resultado de una aplicación como entrada de otra

Publicado por Rodrigo (529 intervenciones) el 21/10/2020 00:21:22
Creo que deberias escribir en la salida estandar (en uno de los programas) y leer desde la entrada estandar en el otro.
No pongas printf en el que lee, supone que quien escribe sabe como y cuantos datos se esperan.

(Aunque esto es una respuesta generica, tal vez no vale para Java :( )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

enlazar resultado de una aplicación como entrada de otra

Publicado por Costero (142 intervenciones) el 21/10/2020 18:47:29
1
2
3
4
5
public class TestOutput {
    public static void main(String args[]){
        System.out.println("Hello from Test");
    }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class TestInput {
    public static void main(String args[]) {
        BufferedReader stdin =
                new BufferedReader(new InputStreamReader(System.in));
 
        try {
            String inputStr = null;
            if((inputStr=stdin.readLine()) != null) {
                System.out.println("Input value: " + inputStr);
            }
            else {
                System.out.println("inputStr is null");
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ahora puedes llamar asi, en un *Nix environment:

java TestOutput | java TestInput
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

enlazar resultado de una aplicación como entrada de otra

Publicado por Costero (142 intervenciones) el 21/10/2020 19:18:26
Si tienes multiple outputs entonces:

1
2
3
4
5
6
7
public class TestOutput {
    public static void main(String args[]){
        for(int i = 0; i < 10; ++i) {
            System.out.println("Hello there: " + i);
        }
    }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class TestInput {
    public static void main(String args[]){
 
        BufferedReader stdin =
                new BufferedReader(new InputStreamReader(System.in));
        String inputStr = "";
 
        while(inputStr != null) {
            try {
                if((inputStr=stdin.readLine()) != null) {
                    System.out.println("Received Input => " + inputStr);
                }
            }
            catch (Exception e) {
                e.printStackTrace();
                break;
            }
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar