1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

  1. @LE}{@NDER

    @LE}{@NDER Гость

    Репутация:
    0
    Всем привет.
    У меня возникла проблема в работе с консолью. Дали мне задание, состоящее из 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
    Java Team

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

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

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

    @LE}{@NDER Гость

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

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

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

    Kmet Well-Known Member
    Java Team

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

    @LE}{@NDER Гость

    Репутация:
    0
    Спасибо, jna действительно очень неплохо.
    Вот код решения для очистки консоли и ввода одиночного символа без ожидания нажатия enter, ну и можно тянуть другие функции:
    Код:
    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();
    }
    }
    И использование:
    Код:
    CLibrary.INSTANCE.system("cls");
    char a = (char)CLibrary.INSTANCE._getch();
    System.out.println("Input: "+a);
    PS: вообще это печально, что такие, вроде бы простые вещи не имеют решения на уровне языка.
     
Загрузка...
Похожие Темы - Работа консолью
  1. fan92rus
    Ответов:
    5
    Просмотров:
    124
  2. erlan1749
    Ответов:
    10
    Просмотров:
    152
  3. ghostik
    Ответов:
    14
    Просмотров:
    503
  4. nerfy
    Ответов:
    15
    Просмотров:
    176
  5. Васян
    Ответов:
    6
    Просмотров:
    168

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