我用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>
感谢
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();
我认为这与fork="yes"有关。当你分叉另一个虚拟机时,你有两个虚拟机写入同一个终端。换行符显然是由正在运行的Ant处理器推送的,而不是您的自定义任务。
不用分叉试试。如果您的任务是交互式的,那么您可能无论如何都不想分叉。
当您要求输入时,即:
System.out.println("Enter input: ");
in.read(); // inputs here
不要打印新行,只需打印(没有换行符),现在当你得到输入时,它应该在同一行上,即:
System.out.print("Enter input: ");
in.read(); // inputs here