我用ant运行一个交互式程序。但是当程序从未要求输入时,光标总是转到下一行:
Enter input:
_
但它应该是:
Enter input: _
有没有人碰巧知道如何解决这个问题?
这是java类
public class MyClass
{
public static void main (String args[])
{
System.out.print ("Enter input: ");
//.....
}
}
这是build.xml的一部分
<target name ="run" depends="build">
<property name="name" value="MyClass"/>
<java fork="yes" classname="${name}" failonerror="true">
<classpath refid="project.classpath"/>
</java>
</target>
由于
答案 0 :(得分:3)
import java.io.Console;
...
Console console = System.console();
String input =
console.readLine("Enter Input: ");
Console是Java 6中的一个很好的实用程序类
otherwice - 扫描仪
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter input: ");
String input = scanner.nextLine();
答案 1 :(得分:2)
我希望它与fork =“yes”有关。当您分叉另一个VM时,您有两个VM写入同一终端。新行显然是由正在运行的Ant处理器推动的,而不是您的自定义任务。
不用分叉就试试吧。如果您的任务是交互式的,那么您可能不想分叉。
答案 2 :(得分:0)
当你要求输入时,即:
System.out.println("Enter input: ");
in.read(); // inputs here
不是打印新行,而是打印(没有换行符号),现在当你输入时,它应该在同一行,即:
System.out.print("Enter input: ");
in.read(); // inputs here