Вывод и ввод данных в консоль Java
Консоль (console) в Java обеспечивает простое и удобное взаимодействия с пользователем. С помощью консоли можно выводить какую-нибудь информацию либо, напротив, используя консоль, считывать данные. В этой статье будет рассказано о том, как осуществляется ввод и вывод данных в консоли Java.
Чтобы обеспечивать взаимодействие с консолью, в языке программирования Java используют класс System.
Вывод на консоль в Java
Чтобы создать потока вывода в вышеупомянутый класс System, вам понадобится специальный объект out. В нём определен метод println, обеспечивающий вывод значения на консоль и перевод курсора консоли на другую строку.
Рассмотрим практический пример с Hello world:
public class Main < public static void main(String[] args) < System.out.println("Привет, мир!"); System.out.println("Пока, мир. "); >>Что здесь происходит? В метод println осуществляется передача значения (в нашем случае это строка), которое пользователь желает вывести в консоль Java. Консольный вывод данных в Джава будет следующий:
Привет, мир! Пока, мир.Выполнять перевод строки не обязательно. Если необходимость в этом отсутствует, применяют метод System.out.print() . Он аналогичен println, но перевод каретки на следующую строку не выполняется.
public class Main < public static void main(String[] args) < System.out.print("Привет, мир!"); System.out.print("Пока, мир. "); >>Вывод в консоли Java:
Привет, мир!Пока, мир.Однако никто не мешает, используя System.out.print, всё же выполнить перенос на следующую строку. Как вариант — использование \n:
System.out.print("Привет, мир! \n");Также есть возможность подставить в строку Ява данные, которые объявлены в переменных. Вот, как это реализуется:
public class Main < public static void main(String[] args) < int i = 10; int y = 99; System.out.println("i=" + i + "; y=" + y); >>В консоли увидим:
i=10; y=99Ещё в Java существует функция, предназначенная для форматирования вывода в консоли, — System.out.printf() . При использовании со спецификаторами, она позволяет добиться нужного формата вывода.
Спецификаторы: • %d — для вывода в консоль целочисленных значений; • %x — для 16-ричных чисел; • %f — выводятся числа с плавающей точкой; • %e — для чисел в экспоненциальной форме (1.3e+01); • %c — вывод в консоль одиночного символа; • %s — вывод в консоль строковых значений.
Рассмотрим, как это функционирует на практике:
public class Main < public static void main(String[] args) < String name = "Bob"; int age = 40; float height = 1.8f; System.out.printf("Name: %s Age: %d Height: %.2f \n", name, age, height); >>Когда осуществляется вывод в консоль Java значений с плавающей точкой, есть возможность задать количество знаков после запятой. Спецификатор %.2f (точнее, «.2») определяет, что будет 2 знака после запятой. Вывод в консоль Java будет следующим:
Name: Bob Age: 40 Height: 1.80Ввод с консоли Java или как ввести данные с консоли Джавы
Чтобы обеспечить ввод с консоли Java, в классе System есть объект in. Именно через объект System.in работать не очень удобно, поэтому часто применяют класс Scanner. Он уже, в свою очередь, как раз таки и применяет System.in.
Рассмотрим практический пример:
import java.util.Scanner; public class Main < public static void main(String[] args) < Scanner in = new Scanner(System.in); System.out.print("Введите любой номер: "); int num = in.nextInt(); System.out.printf("Ваш номер: %d \n", num); in.close(); >>Сам по себе класс Scanner хранится в пакете java.util, поэтому в начале кода мы выполняем его импорт посредством команды import java.util.Scanner.
Для создания непосредственно объекта Scanner в его конструктор осуществляется передача объекта System.in. Далее можно получать значения. В нашей мини-программе сначала выводится просьба ввести номер, а потом введённое пользователем число помещается в переменную num (для получения введённого значения задействуется метод in.nextInt() , возвращающий набранное на клавиатуре целочисленное значение.
Лучше всего попробовать работу этой программы с помощью одного из многочисленных онлайн-компиляторов.
Работать она будет простейшим образом: 1. Сначала вы увидите сообщение в консоли «Введите любой номер:». 2. После ввода числа (пускай это будет 8) в консоли появится второе сообщение — «Ваш номер: 8».
Для класса Scanner предусмотрены и другие методы: • next() — для считывания введённой строки до первого пробела; • nextLine() — для всей введённой строки; • nextInt() — считывает введённое число int; • nextDouble() — для double; • nextBoolean() — для boolean; • nextByte() — для byte; • nextFloat() — для float; • nextShort() — для short.
Давайте напишем простую программу, обеспечивающую ввод информационных данных о человеке в консоль Java:
import java.util.Scanner; public class Main < public static void main(String[] args) < Scanner in = new Scanner(System.in); System.out.print("Введите имя: "); String name = in.nextLine(); System.out.print("Введите возраст: "); int age = in.nextInt(); System.out.print("Введите вес: "); float height = in.nextFloat(); System.out.printf("Name: %s Age: %d Height: %.1f \n", name, age, height); in.close(); >>В этой программке пользователь последовательно вводит данные разных типов: String, int и float. Потом вся информация выводится в консоль Java:
Введите имя: Андрей Введите возраст: 39 Введите вес: 89 Name: Андрей Age: 39 Height: 89.0Вот и всё. Это базовые вещи, если же вас интересуют более продвинутые знания, записывайтесь на курс OTUS в Москве:
Запуск программы с консоли
В предыдущей лекции мы скомпилировали небольшую программу, и получили на выходе файл MySolution.class , содержащий эту же программу в виде байт-кода. Исходный код был таким:
class MySolution < public static void main(String[] args) < System.out.println("Привет командная строка!"); >>Теперь давай передадим JVM этот файл .class , чтобы она его выполнила. Для этого воспользуемся командой java и укажем имя класса содержащего метод main :
D:\temp>java MySolutionВ консоль выведется надпись "Привет командная строка!".
Обрати внимание, что теперь нужно указывать не имя файла ( MySolution.class ), а имя класса ( MySolution ).
Давай попробуем запустить с консоли еще одну программу, на этот раз использующую массив args , параметр метода main :
public class MyArgs < public static void main(String[] args) < if (args.length == 3) < System.out.println(args[0].toLowerCase()); System.out.println(args[1].toUpperCase()); System.out.println(args[2].length()); >else < System.out.println("Three parameters are expected."); >> >D:\temp>javac MyArgs.javaD:\temp>java MyArgsПолучаем вывод: Three parameters are expected.
В последнюю команду после имени класса через пробел можно указать параметры, которые попадут в массив строк args . Например, если передать такие параметры:
D:\temp>java MyArgs One Two ThreeТо массив args будет содержать: ["One", "Two", "Three"]
А на экран будет выведено:
Если хочешь чтобы какой-то параметр содержал пробелы, его нужно взять в двойные кавычки:
D:\temp>java MyArgs "One Two" Three "Four Five Six"one two
THREE
13В том случае, если твоя программа состоит из одного файла, есть упрощенный способ ее запуска без явной компиляции. Просто укажи команде java имя твоего файла с расширением .java и параметры, если надо:
D:\temp>java MyArgs.java param1 param2Такую возможность добавили начиная с 11-й версии Java, чтобы упростить жизнь тем, кто только начинает изучать язык программирования.
- Компиляция и исполнение Java приложений под капотом
- В команде java есть встроенная помощь. Для ее отображения выполни в командной строке:
- java --help
Eclipse for Java Developers. Навигация и редактирование
Наблюдая за со своими знакомыми, которые недавно начали изучать программирование или перешли на Eclipse c другой IDE, я часто замечаю что они почти не используют вспомогательные инструменты среды разработки. Они либо не знают о них вообще, либо не понимают какую практическую пользу они могут принести.
Данная статья предназначена в основном для начинающих в работе с Eclipse. Но в процессе подготовки статьи я сам узнал о нескольких простых и удобных инструментах, которые за два года активной разработки ни разу не использовал.
В данной статье речь пойдет о навигации и редактировании.
Внутри скриншоты.Так как, основная польза данных инструментов проявляется при использовании горячих клавиш, я составил следующие таблицы:
Навигация
![]() ![]() |
![]() |
Описание |
| Ctrl+F | ⌘+F | Простой поиск/замена |
| Ctrl+H | Ctrl+H | Продвинутый поиск/замена |
| Ctrl+Shift+R | ⌘+⇧+R | Открыть ресурс |
| Ctrl+Shift+T | ⌘+⇧+T | Открыть логическую структуру(Класс) |
| Ctrl+Shift+G | ⌘+⇧+G | Найти вхождения переменной, метода, класса |
| F4 | F4 | Открыть меню иеарархии |
| Ctrl+LeftClick | ⌘+LeftClick | Перейти к реализации или определению класса, функции, переменной |
| F3 | F3 | Перейти к определению |
| Ctrl+T | ⌘+T | Перейти к реализации |
| Ctrl+L | ⌘+L | Перейти к линии с определенным номером |
| Alt+( left right ) | ⌘+( [ ] ) | Перемещение в предыдущее/следующее место просмотра в редакторе |
| Ctrl+Q | Ctrl+Q | Перейти к последнему месту редактирования |
| Ctrl+E | ⌘+E | Показать список открытых в редакторе файлов |
| Ctrl+F6 (Ctrl+Shift+F6) | ⌘+F6 (⌘+⇧+F6) | Следующий/предыдущий редактор |
| Ctrl+O | ⌘+O | Показать поля и методы класса |
| Ctrl+T | ⌘+T | Показать иерархию класса |
| F2 | F2 | Открыть javadoc |
| Ctrl+Shift+(up | down) | Ctrl+⌥+(up | down) | Перейти к следующему/предыдущему методу |
Редактирование
![]() ![]() |
![]() |
Описание |
| Ctrl+Space | Ctrl+Space | Автодополнение |
| Ctrl+1 | ⌘+1 | Возможные действия |
| Ctrl+Shift+O | ⌘+⇧+O | Организация импорта пакетов |
| Ctrl+Shift+F | ⌘+⇧+F | Автоформатирование кода |
| Shift+Alt+S | ⇧+⌥+S | Меню генерации кода |
| Shift+Alt+T | ⇧+⌥+T | Меню рефакторинга |
| Shift+Alt+R | ⇧+⌥+R | Переименование переменной, метода, класса |
| Shift+Alt+M | ⌘+⌥+M | Выделение части кода в отдельный метод |
| Ctrl+Alt+(up|down) | ⌘+⌥+(up|down) | Дублирование строки |
| Alt+(up|down) | ⌥+(up|down) | Перемещение строки |
| Ctrl+/ Ctrl+7 | ⌘+/ ⌘+7 | Однострочный комментарий |
| Ctrl+Shift+/ | ⌘+⇧+/ | Многострочный комментарий |
| Ctrl+D | ⌘+D | Удалить строку или выделенный фрагмент |
Рассмотрим каждый инструмент более подробно:
Простой поиск/замена

Ctrl+F
⌘+F

Данный инструмент присутствует в многих текстовых редакторах. Предоставляет возможность находить нужные вхождения текста в текущем документе. И при необходимости быстро заменить на другой текст.
Существует возможность поиска при помощи регулярных выражений, с помощью которой можно составить сложный поиск, однако используется крайне редко для поиска по одному классу.
Если выделить текст и применить данный инструмент — выделенный текст сразу подставится в поле поиска.
Применение:
— Быстрый переход к нужной части кода;
— Замена одного слова на другое. При необходимости написать две функции, которые идентичные по логической структуре, но работают с разными коллекциями, быстрее написать одну функцию, скопировать и сделать замену.
Продвинутый поиск/замена

Ctrl+H
Ctrl+H

Данный инструмент имеет расширяет возможности, который был рассмотрен ранее.
Основные особенности:
— поиск по всем проектам, а не по одному;
— возможен как полнотекстовый поиск так и типизированный;
— при большом количестве файлов полнотекстовый поиск занимает большое количество времени.
Применение:
— Найти вхождения элемента или текста во всех проектах.
Открыть ресурс

Ctrl+Shift+R
⌘+⇧+R

Применение:
Быстрое открытий файла с данными или классом.
Открыть логическую структуру(Класс)

Ctrl+Shift+T
⌘+⇧+T

Можно ввести только заглавные буквы класса. Например, для поиска класса AbstractDogFactory достаточно ввести ADF.
Также можно использовать *.
Применение:
Быстрое открытие файла с классом. Другие файлы игнорируются.
Найти вхождения переменной, метода, класса

Ctrl+Shift+G
⌘+⇧+G

Для выделенного элемента ищет его использование по всем проектам.
Применение:
Намного быстрее чем обычный поиск. Достаточно выделить элемент, применить инструмент и на экране список мест, где этот элемент используется.
Открыть меню иеарархии

F4
F4

Перейти к реализации или определению класса, функции, переменной

Ctrl+LeftClick
⌘+LeftClick
При зажатой клавише Ctrl левый клик мышкой по элементу производит переходит к его определению или реализации.
Применение:
— легко обнаружить где объявлялась переменная;
— быстрый переход в реализацию класса или метода.
Перейти к определению

F3
F3
Переход к определению элемента, на котором стоит курсор.
Перейти к реализации

Ctrl+T
⌘+T
Переход к реализации элемента, на котором стоит курсор.
Перейти к линии с определенным номером

Ctrl+L
⌘+L
Переход к строке с заданным номером.
Применение:
При взаимодействии программисты для того чтобы указать место в коде — называют файл и строку.
Перемещение в предыдущее/следующее место просмотра в редакторе

Alt+( left right )
⌘+( [ ] )
Возвращается на предыдущее/следующее место где просматривался исходный код.
Применение:
При углублении в реализацию одной из функций или класса, и возвращение назад.
Перейти к последнему месту редактирования

Ctrl+Q
Ctrl+Q
Возвращается на предыдущее место где редактировался исходный код.
Применение:
Быстрый возврат на место работы.
Показать список открытых в редакторе файлов

Ctrl+E
⌘+E

Применение:
Быстрый переход между файлами.
Следующий/предыдущий редактор

Ctrl+F6 (Ctrl+Shift+F6)
⌘+F6 (⌘+⇧+F6)

Данные сочетания клавиш не всегда удобны, по-этому имеет смысл переназначить их к примеру на Ctrl+Tab / Ctrl+Shift+Tab
Для быстрого переключения подойдет: Ctrl+Page Up/Page Down — Linux/Windows. Ctrl+Fn+Up/Down — OS X
Показать поля и методы класса

Ctrl+O
⌘+O

При повторном нажатии горячих клавиш в список добавляются методы из классов — родителей
Применение:
— быстрая оценка структуры класса;
— быстрый переход в нужный метод.
Показать иерархию класса

Ctrl+T
⌘+T

При повторном нажатии: разворачивает иерархию в обратную сторону и показывает реализованные интерфейсы.
Применение:
Быстрый переход в родительские классы.
Открыть javadoc

F2
F2

Перейти к следующему/предыдущему методу

Ctrl+Shift+(up | down)
Ctrl+⌥+(up | down)
Автодополнение

Ctrl+Space
Ctrl+Space (конфликтует с Spotlight)
Инструмент дает возможность не писать полные имена функций, классов и переменный, а только их часть, программист выбирает завершение из предложенных.
Однако многие не знают некоторых особенностей автодополнения в eclipse:
— если при выборе автодполнения нажать Ctrl+Enter вместо Enter, слово которое стоит правее курсора заменится на автодополненное.
— автодополнения работает для всех классов, даже для тех, для которых еще не сделан import. Если вы автодополните такой класс — импорт добавится автоматически.
— автодополнение работает для новых переменных:
если вы написали
Point2D
и вызовите автодополнение, то получите
Point2D point2d
— в eclipse присутствуют шаблоны для быстрого написания:
syso
System.out.println();
Наиболее популярные шаблоны:
— syso
— for
— while
— switch
— catch
Посмотреть все шаблоны, а так же добавить свои можно в настройках, в вкладке «Templates».
Возможные действия

Ctrl+1
⌘+1
На мой взгляд самый полезный инструмент в процессе написания кода.
На основе того, на какой строке стоит курсор и есть ли выделение текста, eclipse предлагает возможные варианты изменений и дополнений.
Примеры работы инструмента:
— создание загрушек для реализации методов интерфейса или абстрактного класса
public class Run implements Runnable
действия на строчке с названием класса
public class Run implements Runnable < @Override public void run() < // TODO Auto-generated method stub >>
— создание новых методов
Если в текущей части кода необходим метод, а он еще не существует.
boolean success = isSuccess();
private boolean isSuccess() < // TODO Auto-generated method stub return false; >
— объявление переменных
Если необходимо использовать результат работы функции
isSuccess();
объявляется переменная с правильным именем
boolean success = isSuccess();
— выделение константы
Если внутри кода есть цифра или текст, который необходимо вынести в константу, выделем его и применим инструмент:
String success = "success";
private static final String SUCCESS = "success";
Организация импорта пакетов

Ctrl+Shift+O
⌘+⇧+O
Удаление импортов не используемых пакетов и добавление недостающих.
Автоформатирование кода

Ctrl+Shift+F
⌘+⇧+F
Приведение кода в читабельный вид:
— делает правильные табуляции;
— добавляет/убирает пробелы;
— убирает лишние отступы;
— ограничивает длину строки — переносит текст на следующую другую строку.
Работает для всего выделенного участка кода, или для всего класса.
Применение:
Иногда быстрее написать плохо отформатированную функцию и нажать горячие клавиши, чем писать сразу красиво.
Меню генерации кода

Shift+Alt+S
⇧+⌥+S
Автоматическая генерация — - get и set методов;
— заготовок переопределенных и реализуемых функций;
— hashcode и equals;
— toString;
— конструкторы.
Применение:
Не стоит тратить время на стандартные методы, если их реализации не является специфической.
Меню рефакторинга

Shift+Alt+T
⇧+⌥+T

Переименование переменной, метода, класса

Shift+Alt+R
⇧+⌥+R
Переименование выделенного метода. Благодаря рефакторингу метод будет переименован по всему проекту.
Выделение части кода в отдельный метод

Shift+Alt+M
⇧+⌥+M

Выделение выделенной части в новый метод. Все возможные дубликаты этой части кода в данном классе автоматически заменятся на вызов нового метода.
Дублирование строки

Ctrl+Alt+(up|down)
⌘+⌥+(up|down)
Применение:
Если следующая строка будет похожа на текущую — быстрее скопировать текущую и изменить ее, чем писать еще раз.
Перемещение строки

Alt+(up|down)
⌥+(up|down)
Применение:
Быстрый перенос части кода, без необходимости копировать и вставлять.
Однострочный комментарий

Ctrl+/ Ctrl+7
⌘+/ ⌘+7
Многострочный комментарий

Ctrl+Shift+/
⌘+⇧+/ (конфликтует с системными горячими клавиши для вызова Справки)
При использование на закомментированном коде — комментарии убираются.
Удалить строку или выделенный фрагмент

Ctrl+D
⌘+D
UPDATE: Исправил и дополнил статью.
Большое спасибо arturphoenix,AgentSIB,mishadoff,mdcool,Lihonosov,Aivean,anoshenko,lany,abusalimov,bimeg, netslow,majus за дополнения и комментарии.
Некоторые инструменты косвенно относятся к навигации и редактированию, по-этому я не включил их в статью, но я постораюсь их включить в следующую.
- eclipse
- горячие клавиши
- эффективность работы
Как запустить Slenium+Java+Cucumber без ide

Вроде как существует некий java cucumber.api.cli.Main - но как этим пользоваться я пока не понял. В любом случае наверняка есть способ запустить это просто из командной строки. Расскажите пожалуйста как это сделать?
#2
rlabs





- Город: Россия, Санкт-Петербург
Отправлено 01 августа 2019 - 05:05
Как запустить эти тесты из командной строки и передать нужные параметры, описано в https://cucumber.io/. er/api/#options
но так как у вас они завязаны на раннер Junit, могут возникнуть проблемы (кукумбер не всегда понимает junit-специфичные методы конфигурации тестов), поэтому эээ один из самых простых способов - запустить их мавеном, благо проект уже есть. Как это сделать, можно посмотреть здесь: https://maven.apache. s/cucumber.html
и наконец, можно сделать исполняемый jar. Для этого надо выбрать, что вы будете использовать как runner (junit или cucumber), и подключить к проекту maven-assembly-plugin (https://maven.apache. _Executable_JAR), прописав выбранный раннер как mainClass.
во третьем случае, если нужно менять параметры cucumber при запуске, можно использовать переменные окружения или командной строки (как в первом случае).
