Список использованных источников
1.Герберт, Шилдт Java 8. Руководство для начинающих / Шилдт Герберт. - М.: Диалектика / Вильямс, 2015. - 899 с.
2.Давыдов, Станислав IntelliJ IDEA. Профессиональное программирование на Java / Станислав Давыдов , Алексей Ефимов. - М.: БХВ-Петербург, 2015 . - 800 c.
3.Руководство по языку программирования Java: [Сайт] https://metanit.com/java/tutorial/ дата обращения: (03.09.2018).
Приложение А1
Лабораторная работа №1. Исходный код
Исходный код класса Main
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String info =
"Лабораторная работа №1\n" +
"Вариант 3\n" +
"Соколов Евгений Александрович\n" +
"Условие: Ввести n строк с консоли. Вывести на консоль те строки,\n" +
"длина которых меньше средней, также их длины.";
System.out.println(info);
for (int a = 0; a < 5; a++) {
System.out.println("\n============= " + (a + 1) + " ===============");
Scanner scanner = new Scanner(System.in); // для считывания с консоли
int count;
do {
try { // в блоке try помещается код, который может выкинуть exception. Тут это если передать вместо числа строку(ее нельзя записать в int)
System.out.print("Введите количество строк:"); // Приглашение на ввод
count = Integer.parseInt(scanner.next()); // читаем кол-во строк
break; // выйдет из цикла
} catch (NumberFormatException e) { // если ошибка произошла, будет выполнен код в catch
System.out.println("Не число."); // вывод сообщения об ошибке
}
} while (true);
scanner.nextLine(); // nextInt не пихает в поток символ конца строки, поэтому nextLine не ждет ввода.
Str str = new Str(); // создаем класс
|
|
for (int i = 0; i < count; i++) { // для всех строк введенных с клавиатуры
System.out.println("Введите " + (i + 1) + " строку"); // вывод номер строки
str.add(scanner.nextLine()); // добавляем строку в обьект класса
}
str.print(); // вызывает метод принт
System.out.print("\nПовторить? да/нет: ");
if (scanner.nextLine().equals("нет")) {
return;
}
}
}
}
Исходный код класса Str
import java.util.ArrayList;
import java.util.List;
public class Str {
private List<String> list; // список строк
private double average; // средняя длинна
public Str() { // конструктор
list = new ArrayList<>(); // создаем пустой лист
average = 0; // начальное значение средней длинны 0
}
void add(String string) { // метод для добавления новых строк
list.add(string); // добавляет в лист новую строку
calculateAverage(); // т.к. добавилась новая строка вызывается метод для пересчета средней длинны
}
private void calculateAverage() { // считает среднюю длину
int commonLength = 0; // общая длинна всех строк
for (String s : list) { // для каждой строки в списке
commonLength += s.length(); // сумма длин строк
}
average = ((double) commonLength) / list.size(); // средняя длинна = общая длинна всех строк / на кол-во строк
}
public void print(){ // метод вывода информации
System.out.print("Средние: " + average); // вывод средней длины
for (String s : list) { // для каждой строки
if (s.length() < average){ // если длина строки меньше средней
System.out.print(s + "\nДлина: " + s.length()); // вывод строки и ее длины
}
}
}
}
|
|
Приложение А2
Лабораторная работа №2. Исходный код
Исходный код класса Main
import javafx.geometry.Point3D;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String info =
"Лабораторная работа№2\n" +
"Вариант3\n" +
"Соколов Евгений Александрович\n" +
"Условие:Класс вектор,члены класса - 3 прямоугольные декартовые координаты, методы-конструктор,\n" +
"методы вывода вектора, метод вычисления длины вектора,методы сложения(+), скалярное(%)и векторное(*) произведение векторов.\n" +
"Исходные данные-a={ax,ay,az},b={bx,by,bz}, c={cx,cy, cz}. Результаты-r=(a+b)*c, t=(a+b)c. Найти длины исходных и результирующего векторов.";
System.out.println(info);
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("============= ======== ===============");
Random rnd = new Random();
Vector a = new Vector(new Point3D(rnd.nextInt(10), rnd.nextInt(10), rnd.nextInt(10))); // создание векторов для примера
Vector b = new Vector(new Point3D(rnd.nextInt(10), rnd.nextInt(10), rnd.nextInt(10)));
Vector c = new Vector(new Point3D(rnd.nextInt(10), rnd.nextInt(10), rnd.nextInt(10)));
System.out.printf("норма для вектора a %.2f\n", a.norm()); // вывод длины вектора
System.out.printf("норма для вектора b %.2f\n", b.norm());
System.out.printf("норма для вектора c %.2f\n", c.norm());
Vector r = a.addition(b).vectorMultiplication(c); // (a+b) и векторное умножение на c
r.info(); // вывод информации о векторе r
double t = a.addition(b).scalarMultiplication(c); // (a+b)c
System.out.printf("(a+b)c = %.2f\n", t);
System.out.print("Повторить? да/нет:");
if (scanner.nextLine().equals("нет")) {
return;
}
}
}
}
|
|
Исходный код класса Vector
import javafx.geometry.Point3D;
public class Vector { // класс вектор
private Point3D basis; // ортогональные координаты вектора. 3 точки
public Vector(Point3D basis) { // конструктор, который принимает обьект класса Point3D, который хранит в себе 3 точки
this.basis = basis; // сохраняем то что было в аргументе, в переменую, котороя находится в этом классе
}
public double cosAlpha() { // направляющие косинусы вектора
return basis.getX() / norm();
}
public double cosBeta() {
return basis.getY() / norm();
}
public double cosGamma() {
return basis.getZ() / norm();
}
public double norm() { //норма, модуль или длинна вектора
return Math.sqrt(basis.getX() * basis.getX() + basis.getY() * basis.getY() + basis.getZ() * basis.getZ());
}
public Vector addition(Vector other) { // сложение векторов, в качестве аргумента - другой обьект класса
double i = basis.getX() + other.basis.getX(); // получаем новые координаты
double j = basis.getY() + other.basis.getY();
double k = basis.getZ() + other.basis.getZ();
|
|
Point3D newBasis = new Point3D(i, j, k); // сохдаем новый экхемпляр класса Point3D, для того чтобы передать его в качестве аргумента при создании нового вектора[см строку ниже]
return new Vector(newBasis); // вызываем конструктор класса Vector[это создает обьект, т.е. новый вектор с координатами, которые передавались в качестве аргумента] и возвращаем этот обьект
}
public double scalarMultiplication(Vector other) { // скалярное произведение векторов
return basis.getX() * other.basis.getX() + basis.getY() * other.basis.getY() + basis.getZ() * other.basis.getZ(); // результатом является число
}
public Vector vectorMultiplication(Vector other) { // векторное произведение
double i = basis.getY() * other.basis.getZ() - basis.getZ() * other.basis.getY(); //получаем координаты нового вектора
double j = basis.getZ() * other.basis.getX() - basis.getX() * other.basis.getZ();
double k = basis.getX() * other.basis.getY() - basis.getY() * other.basis.getX();
Point3D newBasis = new Point3D(i, j, k); // создаем экземпляр[обьект] класса Point3D
return new Vector(newBasis); // вызываем конструктор[создаем] обьект[экземпляр] класса Vector и возвращаем его
}
public void info() { // выводит информацию о данном векторе
System.out.println("###");
System.out.println("Характеристика вектора");
System.out.printf("Базис вектора: (%.2f; %.2f; %.2f)\n", basis.getX(), basis.getY(), basis.getZ());
System.out.println("Направление косинусов вектора:");
System.out.printf("Альфа %.2f\n", cosAlpha());
System.out.printf("Бета %.2f\n", cosBeta());
System.out.printf("Гамма %.2f\n", cosGamma());
System.out.println("###");
}
}
Приложение А3
Дата добавления: 2018-11-24; просмотров: 283; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!