Как читать ввод через муравей без перехода на следующую строку? - PullRequest
4 голосов
/ 01 апреля 2012

Я запускаю интерактивную программу с муравьем. Но когда программа никогда не запрашивает ввод, курсор всегда переходит на следующую строку:

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 ]

3 голосов
/ 16 апреля 2012
import java.io.Console;

....

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

Консоль - это полезный служебный класс в Java 6

otherwice - Scanner

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
System.out.print("Enter input: ");
String input = scanner.nextLine();
2 голосов
/ 17 апреля 2012

Я ожидаю, что это связано с fork = "yes". Когда вы разветвляете другую виртуальную машину, у вас есть две записи виртуальной машины на один и тот же терминал. Новая строка явно запускается процессором Ant, а не вашей пользовательской задачей.

Попробуй без разветвления. Если ваша задача интерактивная, вы, вероятно, все равно не хотите ее разветвлять.

0 голосов
/ 02 апреля 2012

Когда вы запрашиваете ввод, т. Е .:

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

Вместо того, чтобы печатать новую строку, просто напечатайте (без символа новой строки), теперь, когда вы получаете ввод, он должен находиться на той же строке, т.е.

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