Работа с консолью.

Тема в разделе "Java", создана пользователем @LE}{@NDER, 28 авг 2010.

  1. @LE}{@NDER

    @LE}{@NDER Гость

    Всем привет.
    У меня возникла проблема в работе с консолью. Дали мне задание, состоящее из 2х компонентов, бизнес логика и пользовательский интерфейс: вьюшки с меню. Бизнес логику уже написал, все вроде бы просто, но... swingом пользоваться не разрешили, только консоль, сторонние библиотеки типа JCurses тоже не катят - все надо сделать самому.
    Вот тут и возникли вопросы:
    1. Как очищать консоль? В Сишке я использовал system("cls"); В C# все еще проще - Console.Clear();
    Решения типа for(int i=0; i<8; i++){System.out.println("\n");} не катят, мне нужно чтобы меню было сверху.
    2. Как в джаве реализовать односимвольный ввод?
    Например в С# я мог написать что-то вроде такого:
    <!--shcode--><pre><code class='C#'>ConsoleKeyInfo cki;
    Console.Write("Input char: ");
    cki = Console.ReadKey();
    Console.WriteLine("\n"+cki.Key.ToString());[/CODE]
    В джаве пробовал BufferedReader и Scanner, но добиться чтения одного символа с завершением ввода я не смог.
     
  2. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    откуда такие странные требования?

    платформонезависимого метода нет. надо определится, что надо поддерживать.
    если имеется ввиду non blocking console input то без jni не получится.

    если кратко, то ява не поддерживает консоль. консоль в яве - это поток байтов. в который можно писать и который можно читать. все.
     
  3. @LE}{@NDER

    @LE}{@NDER Гость

    Откуда требования - это значения не имеет. Их нужно придерживаться.

    Что такое jni и как этим пользоваться? Желательно какой-нибудь содержательный линк.

    99%, что задание проверять будут на винде, поэтому платформа скорее всего виндозная.
     
  4. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    http://java.sun.com/docs/books/jni/
    но напрямую использовать jni достаточно муторно и для него есть замечательный врапер https://jna.dev.java.net/
     
  5. @LE}{@NDER

    @LE}{@NDER Гость

    Спасибо, jna действительно очень неплохо.
    Вот код решения для очистки консоли и ввода одиночного символа без ожидания нажатия enter, ну и можно тянуть другие функции:
    Код (Text):
    import com.sun.jna.*;
    public abstract class View {
    public interface CLibrary extends Library {
    CLibrary INSTANCE = (CLibrary)
    Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
    CLibrary.class);

    void system(String command);
    int _getch();
    }
    }
    И использование:
    Код (Text):
    CLibrary.INSTANCE.system("cls");
    char a = (char)CLibrary.INSTANCE._getch();
    System.out.println("Input: "+a);
    PS: вообще это печально, что такие, вроде бы простые вещи не имеют решения на уровне языка.
     
Загрузка...
Похожие Темы - Работа консолью
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    32
  2. Hoasker
    Ответов:
    0
    Просмотров:
    65
  3. garri671
    Ответов:
    0
    Просмотров:
    57
  4. lelik200969
    Ответов:
    0
    Просмотров:
    54
  5. Kozolick
    Ответов:
    0
    Просмотров:
    144

Поделиться этой страницей