如何通过ant读取输入而不进入下一行?

时间:2012-04-01 19:09:14

标签: java ant input build.xml

我用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>

由于

3 个答案:

答案 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