Кроссплатформенное программирование. Лабораторная работа 3 По дисциплине Кроссплатформенное программирование. Фамилия Яковлев Имя Александр
Скачать 278.31 Kb.
|
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ им. проф. М.А. Бонч-Бруевича ФАКУЛЬТЕТ ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ Лабораторная работа №3 По дисциплине Кроссплатформенное программирование. Фамилия: Яковлев Имя: Александр Отчество: Андреевич Курс:3 Студ. билет №:1610541 Группа №: ОБ-62з Дата сдачи работы _18.06.2019 Санкт-Петербург 2019 Цель и назначение работы Изучение общих принципов программирования в среде java. Написание приложения, осуществляющего поиск в случайно созданном тексте "слов", являющихся палиндромами, заполнение найденными "словами" массива и распечатка полученного массива на экране. Необходимо создать консольное приложение, осуществляющее генерацию случайного текста в размере не менее чем 100 строк. Все "слова" текста составляются программой автоматически из случайно выбранных букв. После создания текста программа осуществляет поиск в тексте слов – палиндромов (то есть таких слов, которые одинаково читаются слева – направо и справа – налево), заполняет этими словами массив и распечатывает на экране исходный текст и найденные палиндромы. Для простоты размер всех "слов" взять одинаковым. Размер "слова" задается пользователем путем ввода с клавиатуры. Ход работы Пишем программу в соответствии с заданием: import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class App { private static final int LINE_LENGTH = 140; private static final int LINE_NUMBER = 240; private static final Random rand = new Random(); private static char getRandLetter() { return (char) (97 + rand.nextInt(26)); } private static String getText(int wordLength) { StringBuilder text = new StringBuilder(); for(int k = 0; k < LINE_NUMBER; k++) { StringBuilder line = new StringBuilder(); while(line.length() + wordLength + 1 <= LINE_LENGTH) { char[] chars = new char[wordLength]; for(int j = 0; j < wordLength; j++) { chars[j] = getRandLetter(); } line.append(chars).append(' '); } text.append(line).append("\n"); } return text.toString(); } private static boolean isPalindrome(String s){ if(s == null || s.isEmpty()){ return false; } int length = s.length(); char[] chars = s.toCharArray(); for(int i = 0, j = length - 1; i < length / 2 && j >= length - length / 2; i++, j--) { if (chars[i] != chars[j]){ return false; } } return true; } private static String[] findPalindromes(String text) { return Arrays.stream(text.split("\\s")) .filter(App::isPalindrome) .toArray(String[]::new); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Input the word length: "); int wordLength = scanner.nextInt(); System.out.println("The text is : "); String text = getText(wordLength); System.out.println(text); System.out.println("Palindrome list: "); System.out.println(Arrays.toString(findPalindromes(text))); } } Запускаем ее и вводим число Получаем сгенерированный текст и массив слов-палиндромов: Вывод Была продемонстрирована рабочая программа, удовлетворяющая техническому заданию. |