Сообщество - Задачки для изучающих Java
Добавить пост

Задачки для изучающих Java

43 поста 1 761 подписчик

Популярные теги в сообществе:

Простейшие задачи

Тут будут представлены простейшие задачи для набивания руки:

1) Написать простейшую программу, выводящую текст: Быть котом - круто, можно гадить по углам и лизать яйца. Любой дополнительный функционал приветcтвуется ;-)

2) Написать простейшую программу, считывающую кличку кота и выводящую фразу: "Меня зовут кот "ваше имя" мой хозяин - форменное ЧМО, думает, что он в доме главный. Однако мы - то знаем кто убирает мои какашки. Любой дополнительный функционал приветcтвуется ;-)

3) Написать простейшую программу:

Убери комментарии с части кода, чтобы на экран вывелось сообщение "Salem wants a little petting".

public class Solution {

public static void main(String[] args) {

// String s = "Salem";

// System.out.println("Vaska");

// System.out.println("little");

// System.out.print("petting");

// System.out.println("Salem" + "wants" + "a" + "little" + "petting");

// System.out.println(s);

// System.out.println(" ");

// System.out.print("wants ");

// System.out.print(" ");

// System.out.println("a");

//System.out.print("a");

//System.out.print("little ");
//System.out.print(" " + "little ");

//System.out.print(" " + "petting");

//System.out.println("petting ");

//System.out.print("petting");

}

}

Показать полностью

Решение XML-задачи

Всем привет! :)


Предыдущая задача: https://pikabu.ru/story/javazadacha_s_xml_5623623


Возможное решение с использованием JAXB и Stream API: https://gist.github.com/Generalus/716cc96c39cf7bfb7a83a9c52d...


Каждые новая задача/вопросы к собеседованию будут, только если предыдущие выйдут из минусов, иначе не вижу смысла в затее.

Вопросы по коду задавайте в комментариях!

Java-задача с XML

Всем привет!

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


Задание: реализовать функцию со следующей сигнатурой:

Collection<String> folderNames(String xml, char startingLetter)

Она должна принимать на вход строку xml, содержащую XML-структуру, подобную этой:


<?xml version="1.0" encoding="UTF-8"?>

<folder name="c">

<folder name="program files">

<folder name="uninstall information" />

</folder>

<folder name="users" />

</folder>


а также букву startingLetter


В качестве возвращаемого значения должна быть коллекция значений всех аттрибутов name, каждая из которых начинается с буквы startingLetter.


Например, для XML выше, функция должна вернуть коллекцию с "uninstall information" и "users" (порядок не важен).


Решения добавляйте в комментариях (желательно, ссылки на github/pastebin), постараюсь првоести их код-ревью, а через некоторое время выложу свое решение.


Ну и по традиции, кот, из одного известного стикерпака ^_^

Java-задача с XML Java, Xml, Задача
Показать полностью 1

Создаем программу Hello World в JavaFX в IntelliJ IDEA

Пост вольный перевод статьи:

https://www.jetbrains.com/help/idea/developing-a-javafx-hell...


Для начала создаем проект JavaFX

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Выбираем JavaFX и жмем Next

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Даем имя проекту и жмем Finish.

информация с сайта http://ru.java.wikia.com/wiki/Контроллер

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

Чаще всего, в самом контроллере не описывается логика обработки данных. Создаются дополнительные, сервисные классы, которые выполняют все основные задачи по обработке данных. Задача методов в контроллере - вызов сервисных методов в нужном порядке и возвращение результатов клиенту.

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

Файл sample.fxml отвечает за интерфейс пользователя.

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Переименовываем Controller в файле Controller.java

1. Наводим на имя класса-контроллера (Controller), выбираем Refractor->Rename и меняем имя класса-контроллера:

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Жмем enter и завершаем рефракторинг. В файле sample.fxml должно было измениться имя класса контроллера: fx:controller="sample.SampleController"

Важный момент, конструкция fx:id будет использоваться часто, она означает, что мы работаем с объектом класса Controller.

Создадим кнопку в интерфейсе пользователя, для этого в файл  sample.fxml добавим следующие сточки:

<Button text="Say 'Hello World'" onAction="#sayHelloWorld"/>

<Label GridPane.rowIndex="1" fx:id="helloWorld"/>


Возможно, понадобиться руками добавить:


<?import javafx.scene.control.Button?>

<?import javafx.scene.control.Label?>

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Как видите sayHelloWorld отмечен красным цветом, а helloWorld выделен.

Введем исправления:

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Используя встроенные функции IDEA создадим поле helloWorld в файле SampleController.java

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Жмем  enter, завершаем рефракторинг.

Далее создаем функцию sayHelloWorld встроенными способами IDEA:

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Жмем enter и завершаем рефракторинг.

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Добавляем действие в функцию sayHelloWorld:

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Результат работы программы:

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост
Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Добавим стили в нашу программу.

В файл sample.fxml добавим следующий текст:

stylesheets="/sample/sample.css"

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Встроенными методами IDEA создадим файл sample.css

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

В файл sample.css добавляем текст:

.root {

-fx-background-color: gold; //Цвет заднего фона окна

}


.label {

-fx-font-size: 20; //Высота текста Hello World

}

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост

Результат работы программы:

Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост
Создаем программу Hello World в JavaFX в IntelliJ IDEA Java, Javafx, Программирование, Графика, Длиннопост
Показать полностью 17

Помогите начинающему программисту JAVA

Дорогие пикабушники. Если среди вас есть программист по java, подскажите новичку как набирать опыта. т.е. требуется практика, примеры работы или участие в каком не будь проекте как новичку.


Буду благодарен

Интересная статья для тех, кто программирует в IntelliJ IDEA

http://info.javarush.ru/idea_help/2013/10/29/%D0%A0%D1%83%D0...


http://info.javarush.ru/idea_help/2013/08/07/IntelliJ-IDEA-%...


http://stackoverflow.com/questions/3320764/how-to-make-syste...

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения.

О да, я вернулся..)

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Проект находится по адресу: https://github.com/Norfin85/TankBattle

Вся графика реализована в файле: Graphics.java.

Открытие окна происходит через стандартную для Swing процедуру:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

С помощью SwingUtilities.invokeLater мы помещаем создание окна в очередь событий - event dispatch thread.

Основное окно использует компоновщик BoxLayout:

frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)

и размещает панели сверху-вниз.

Внутрь окна мы помещаем две панели: MainPanel и BottomPanel, которые будут содержать более детальные блоки программы, о чем будет рассказано ниже.


Примерная структура любого окна в Swing:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Структура нашего окна:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Параметры нашего окна определяются следующими командами:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Структура MainPanel:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

На первый взгляд мудрено....

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

Рассмотрим более детально.

Внутрь MainPanel помещаются три панели - LeftPanel, CenterPanel, RightPanel, для них задаются конкретные размеры с помощью функции setPreferredSize(new Dimension(X, Y)).  Дальше простая арифметика - сумма параметров по X и Y должна равняться параметрам

X и Y MainPanel.

Внутри MainPanel используется тоже компоновщик BoxLayout, но уже по оси X, размещающий панели слева-направо.

Внутрь панелей вносятся элементы. Для позиционирования элементов я выбрал способ - создание EmptyBorder(int top, int left, int bottom, int right) и задание конкретных размеров элементов через функцию setPreferredSize(new Dimension(X, Y)).


В BottomPanel помещаются две кнопки и разносятся по сторонам через:

setAlignmentX(Component.RIGHT_ALIGNMENT)

setAlignmentX(Component.LEFT_ALIGNMENT)


Внутри элементов TextPanel размещаются элементы JTextPane. Использование данных элементов позволило стилизовать текст через следующую конструкцию:

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

StyleConstants.setAlignment(simpleAttributeSet, StyleConstants.ALIGN_LEFT)- выравнивание по левому краю.

StyleConstants.setFontSize(simpleAttributeSet, 12) - размер шрифта.

StyleConstants.setFontFamily(simpleAttributeSet, "Times New Roman, cursive") - семейство шрифта.

simpleAttributeSet.addAttribute(StyleConstants.CharacterConstants.Foreground, new Color(112, 126, 173)) - цвет шрифта.


Дляотражения имеющихся танков использованы JProgressBar-ы, в дальнейшем они будут отражать промежуточные показатели здоровья танком, а не только жив-мертв.

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост

setMinimum(0) - минимальное значение в прогресс баре.

setMaximum(100) - максимальное значение.

setValue(100) - текущее значение.

setString("Легкий танк СССР " + (i + 1)) - аннотация.


BattleList (JTextPane) мы помещаем внутрь JScrollBar и назначаем параметр jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS)  - чтобы всегда отражался скролл.


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


public static void setButton(String text, Boolean setActive) - меняет нашу кнопку buttom (меняет текст и делает активно/неактивной).


public static void setHealthes(Tank ussrTank, Tank germanTank) - меняет параметры здоровья в текстовых блоках слева и справа.


public static void setCurrentBattle(Tank ussrTank, Tank germanTank) - устанавливает текст текущей битвы в текстовом блоке CurrentBattle.


public static void updateFrame() - обновляем окно.


public static void updateBattleList() - обновляем battleList.


public static void startBattle() - запускает бой.


public static void setTankHealth(int id, int percent)  - устанавливает значение здоровья танка в соответствующем JProgressBar.


public static void showLog() - отображает окно лога битвы.


Лог битвы выведен на отдельную кнопку, открывающую окно лога, состоящего из JFrame и помещенного в него JScrollBar с вложенным в него JTextPane.


За сим на сегодня все..) Продолжение следует...)

Реализация программы TankBattle с использованием Swing. Часть первая - создание окна приложения. Java, Задача, Обучение, Программирование, Длиннопост
Показать полностью 9

В Питере шаверма и мосты, в Казани эчпочмаки и казан. А что в других городах?

Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.

Реклама АО «Кордиант», ИНН 7601001509

Не получается решить проблему

Новая версия битвы танков, не получается решить проблему запуска боя дважды....

https://github.com/Norfin85/TankBattle

Много чего нового - добавлена графика, изменена система боя и т.д.

Буду благодарен за помощь.)

Отличная работа, все прочитано!