4

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

谢谢

4

3 回答 3

3
import java.io.Console;

……

Console console = System.console();     
String input =
    console.readLine("Enter Input: ");

Console 是 Java 6 中一个不错的实用程序类

否则 - 扫描仪

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
System.out.print("Enter input: ");
String input = scanner.nextLine();
于 2012-04-16T18:34:35.873 回答
2

我希望它与 fork="yes" 有关。当你 fork 另一个 VM 时,你有两个 VM 写入同一个终端。换行符显然是由正在运行的 Ant 处理器推送的,而不是您的自定义任务。

尝试不分叉。如果您的任务是交互式的,那么您可能无论如何都不想分叉。

于 2012-04-17T13:23:39.010 回答
0

当您要求输入时,即:

System.out.println("Enter input: ");
in.read(); // inputs here

而不是打印一个新行,只需打印(没有新行字符),现在当您输入时,它应该在同一行,即:

System.out.print("Enter input: ");
in.read(); // inputs here
于 2012-04-01T21:13:58.210 回答