• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы @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х компонентов, бизнес логика и пользовательский интерфейс: вьюшки с меню. Бизнес логику уже написал, все вроде бы просто, но... swingом пользоваться не разрешили, только консоль, сторонние библиотеки типа JCurses тоже не катят - все надо сделать самому.
откуда такие странные требования?

1. Как очищать консоль? В Сишке я использовал system("cls"); В C# все еще проще - Console.Clear();
платформонезависимого метода нет. надо определится, что надо поддерживать.
Как в джаве реализовать односимвольный ввод?
если имеется ввиду non blocking console input то без jni не получится.

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


платформонезависимого метода нет. надо определится, что надо поддерживать.

если имеется ввиду non blocking console input то без jni не получится.

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

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

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

но напрямую использовать jni достаточно муторно и для него есть замечательный врапер link removed
 

но напрямую использовать jni достаточно муторно и для него есть замечательный врапер link removed
Спасибо, 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: вообще это печально, что такие, вроде бы простые вещи не имеют решения на уровне языка.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab