2016-09-24 2 views
0

Ich versuche, meine Java-Klasse mit Python zu testen, verwenden i suproccess in einem „for-Schleife“java mit Python ausführen und es dann zu Daten geben

>>> import subprocess 
>>> for x in range(1, 6): 
...  subprocess.call(["java", "Watermelon"]) 
... 

so, wenn die Wassermelone auf einer Eingabe wartet ausgeführt wird .. .

public class Watermelon{ 
    public static void main(String[]args){ 
    Scanner sc = new Scanner(System.in); 

    int w = sc.nextInt(); 

und ich habe den „Wert“ und drücken Sie ENTER, um den „Wert“ zu Watermelon bekommen und die Schleife von python weiter und geben Sie den „Wert“ wieder und ... bis zum Ende an den Eingang.

Können Sie mir helfen, wie der „Wert“ zu Java-Klasse „x“ in Python-Schleife zu verwenden ...

Vielen Dank für Ihre Hilfe und entschuldigt mich bei meinem Englisch.

+0

Werfen Sie einen Blick auf [ 'Popen'] (https: // docs. python.org/2/library/subprocess.html#popen-constructor). Sie können Pipes verwenden, um 'stdin' und' stdout' des untergeordneten Prozesses zu verbinden. – Pablo

Antwort

-2

Sie können dies sehr leicht

>>> import subprocess 
>>> for x in range(1, 6): 
...  subprocess.call(["java", "Watermelon "+x]) 
... 

Sie müssen nur x fügen Sie die Zeichenfolge zu vervollständigen.

Genau wie java ProgramName int1 int2 ...

, auch Scanner wird das Programm und Programm wartet auf Benutzereingaben zu stoppen. Stattdessen können Sie Folgendes tun

int w =Integer.parseInt(args[0]); 
0

Sie PyJnius verwenden können Java-Klassen als Python-Klassen zuzugreifen.

>>> from jnius import autoclass 
>>> system = autoclass('java.lang.System') 
>>> con = system.console() 
>>> con.readLine() 
12 
'12' 
>>> 

Test mit einer kompilierten Watermelon Klasse:

import java.io.Console; 

public class Watermelon 
{ 
    public String read() 
    { 
     Console con = System.console(); 
     String line = con.readLine(); 
     return line; 
    } 
} 

Python-Code:

>>> from jnius import autoclass 
>>> w = autoclass('Watermelon') 
>>> wi = w() 
>>> line = wi.read() 
12 
>>> type(line) 
<type 'str'> 
>>> 
+0

@anderson Rodriguez Ist das nützlich? – Zety

Verwandte Themen