如何在不进入下一行的情况下通过ant读取输入



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

相关内容

  • 没有找到相关文章

最新更新