Файл: Лабораторная работа 3 По дисциплине Кроссплатформенное программирование. Фамилия Яковлев Имя Александр.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.02.2024
Просмотров: 9
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ им. проф. М.А. Бонч-Бруевича
ФАКУЛЬТЕТ ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ
Лабораторная работа №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)));
}
}
-
Запускаем ее и вводим число
-
Получаем сгенерированный текст и массив слов-палиндромов:
Вывод
Была продемонстрирована рабочая программа, удовлетворяющая техническому заданию.