ЛР1_разработка консольного приложения на JAVA
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА № 42
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
В.А. Ушаков |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1 РАЗРАБОТКА КОНСОЛЬНОГО ПРИЛОЖЕНИЯ НА JAVA |
|
по курсу: КРОССПЛАТФОРМЕННОЕ ПРОГРАММИРОВАНИЕ |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4021 |
|
|
|
Фарзалина Алина |
|
|
|
|
|
фамилия, имя |
Санкт-Петербург 2022
Цель работы
Изучение процедурной модели программирования, изучение основ работы со строками и файлами на языке JAVA.
Задание
Расчет числа N и соответствующих вариантов
N = 4021 + 19 = 4040
Сортировка = 1. по убыванию длины строки (при 4040/2 остаток 0, 0 + 1 = 1)
Метод сортировки = 1. поиск минимума (при 4040/4 остаток 0, 0 + 1 = 1)
Обработка строк = 6. добавить в конец строки количество гласных букв (при 4040/15 получается целое 269 и остаток 5, 5 + 1 = 6)
2) Ход работы
1. Организовать ввод числа строк n с консоли или ввести их из указанного (в консоли) текстового файла.
2. Организовать ввод n строк с консоли в массив строк.
3. Выполнить сортировку по убыванию длины (через поиск минимума)
4. Выполнить задание по обработке строк в соответствии с вариантом: добавить в конец строки количество гласных букв
5. Организовать ввод строки fname с именем выходного файла.
6. Записать результат обработки строк в файл с именем fname.
7. В последнюю строку файла необходимо записать данные: номер варианта, ФИО студента, текущую дату.
Исходный код программы
package com.mycompany.mavenproject1;
import java.io.*;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.time.LocalDate; //импорт класса для работы с датами
import java.time.LocalTime; //импорт класса для работы со временем
public class Mavenproject1
{
public static void main(String[] args) {
// 1. ввод числа строк с консоли
int n = 0;
while ( true ) {
System.out.println("Введите число строк");
// создание объекта класса Scanner для ввода данных с консоли
Scanner sc1 = new Scanner(System.in);
try {
// чтение числа в переменную
n = sc1.nextInt();
break;
}
catch (InputMismatchException fg) {
// если введенное значение не является числом
System.out.print("Вы ввели не число! Попробуйте еще раз\n");
}
}
//2. ввод строк с консоли в массив строк
// создание массива строк
String[] str = new String[n];
// создание объекта класса Scanner для ввода данных с консоли
Scanner sc2 = new Scanner(System.in);
// заполнение массива строк
for (int i = 0; i < n; i++) {
System.out.println("Введите строку №" + (i+1));
str[i] = sc2.nextLine();
}
// 3. сортировка массива строк по убыванию длины через поиск минимума
for ( int i = 0; i < str.length -1; i++) {
for (int j = i+1; j < str.length; j++) {
if (str[i].length() < str[j].length()) {
String temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
// Вывод массива строк в консольку
System.out.print("Строки в порядке убывания через поиск минимума: ");
for(int k=0; k<n; k++){
System.out.print(str[k] + " ");
}
//4. обработка строк: добавить в конец строки количество гласных букв
String vowels = "eyuioa"; // создадим строку со всеми гласными буквами
int vowelsCount = 0;
for(int k = 0; k < n; k++)
{
//проходим по всем строкам массива
for(int j = 0; j < str[k].length(); j++)
{
//если символ текущей строки не включен в строку consonants,
//то прибавляем +1
char currentChar = str[k].charAt(j);
if(vowels.contains("" + currentChar))
{
vowelsCount++;
}
}
}
System.out.print(vowelsCount);
//5. ввод строки fname с именем выходного файла
System.out.println("\nВведите имя файла, в который хотите занести данные:");
Scanner file_name_sc = new Scanner(System.in);
//считываем введенное имя файла с консоли в переменную
String fname = file_name_sc.nextLine();
// объявляем файловую переменную с привязкой к необходимому файлу
File fp = new File(fname + ".txt");
// проверка существования файла
if (!fp.exists())
{
// создание нового файла
try
{
boolean created = fp.createNewFile();
if(created)
System.out.println("Файл был создан");
}
catch(IOException ex)
{
System.out.println(ex.getMessage());
}
}
try
{
//6. запись результата обработки строк в файл с именем fname
//создаем объект класса FileWriter для записи данных в текстовый файл
FileWriter writer = new FileWriter(fp, false);
writer.write("Привествую!\n\nСтроки в порядке убывания через поиск минимума: ");//записываем строки в файл
for(int i = 0; i < n; i++)
{
writer.write(str[i] + " ");//записываем строки в файл
}
writer.write(""+ vowelsCount);
//7. занесение в последнюю строку файла следующее: номер варианта, ФИО студента, текущая дата
writer.write("\n\nНомер варианта - 6, имя - Фарзалина Алина Рамильевна, текущая дата - " + LocalDate.now() + " " + LocalTime.now());
writer.flush();//очищаем файловый поток
System.out.println("Данные были записаны в файл");
}
catch(IOException ex)
{
System.out.println(ex.getMessage());
}
}
}
Результаты работы программы
Рисунок 1 – Вывод программы в консоли
Рисунок 2 – Вывод программы в файл, созданный в консоли
Заключение
В ходе выполнения данной лабораторной работы была изучена процедурная модель программирования на языке JAVA, а именно: разработано консольное приложение для работы со строками и файлами.