Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2013, 14:34   #1
shmat_ru
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 27
По умолчанию Классы файловых потоков Java

Задача:Создать класс «Отрезок», содержащий информацию о конечных точках. На его основе создать класс «вектор». Написать методы, определяющий, являются ли отрезки параллельными, а векторы – сонаправленными.
Я это сделал,но мне надо теперь сделать создать класс исключений , сгенерировать и обработать исключение этого класса в процессе выполнения программы. Обработчик исключения должен предлагать исправить возникшую ошибку. В программе реализовать возможность записи объектов в файл и чтения объектов из файла.
Код:
package main;

public class Main {

   public static void main(String[] args) {
      Segment s1 = new Segment(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
      Segment s2 = new Segment(1.0, 1.0, 1.0, 2.0, 2.0, 2.0);
      Segment s3 = new Segment(2.0, 2.0, 2.0, 1.0, 1.0, 1.0);
      Segment s4 = new Segment(0.0, 0.0, 0.0, 1.0, 2.0, 3.0);
      Vector v1 = new Vector(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
      Vector v2 = new Vector(1.0, 1.0, 1.0, 2.0, 2.0, 2.0);
      Vector v3 = new Vector(2.0, 2.0, 2.0, 1.0, 1.0, 1.0);
      Vector v4 = new Vector(0.0, 0.0, 0.0, 1.0, 2.0, 3.0);
      if (s1.isParallel(s1, s2)) {
         System.out.println("Segment s1 parallel segment s2");
      } else {
         System.out.println("Segment s1 don't parallel segment s2");
      }
      if (s1.isParallel(s1, s3)) {
         System.out.println("Segment s1 parallel segment s3");
      } else {
         System.out.println("Segment s1 don't parallel segment s3");
      }
      if (s1.isParallel(s1, s4)) {
         System.out.println("Segment s1 parallel segment s4");
      } else {
         System.out.println("Segment s1 don't parallel segment s4");
      }
      if (v1.isCollinear(v1, v2)) {
         System.out.println("Vector v1 collinear vector v2");
      } else {
         System.out.println("Vector v1 don't collinear vector v2");
      }
      if (v1.isCollinear(v1, v3)) {
         System.out.println("Vector v1 collinear vector v3");
      } else {
         System.out.println("Vector v1 don't collinear vector v3");
      }
      if (v1.isCollinear(v1, v4)) {
         System.out.println("Vector v1 collinear vector v4");
      } else {
         System.out.println("Vector v1 don't collinear vector v4");
      }
   }
}

class Point {
   final public double x;
   final public double y;
   final public double z;

   public Point(Point point) {
      x = point.x;
      y = point.y;
      z = point.z;
   }

   public Point(double x, double y, double z) {
      this.x = x;
      this.y = y;
      this.z = z;
   }
}

class Segment {
   /** координаты отрезка */
   protected Point begin;
   protected Point end;

   /** конструктор по умолчанию */
   Segment() {
      begin = new Point(0.0, 0.0, 0.0);
      end = new Point(0.0, 0.0, 0.0);
   }

   /** конструктор с входными параметрами (координатами концов отрезка) */
   Segment(double x_begin, double y_begin, double z_begin, double x_end,
         double y_end, double z_end) {
      begin = new Point(x_begin, y_begin, z_begin);
      end = new Point(x_end, y_end, z_end);
   }

   Segment(Point begin, Point end) {
      this.begin = begin;
      this.end = end;
   }

   /** конструктор создающий копию объекта */
   Segment(Segment segment) {
      this(segment.begin, segment.end);
   }

   /** отрезки параллельны? */
   public boolean isParallel(Segment s1, Segment s2) {
      if (s1.begin.x - s1.end.x == s2.begin.x - s2.end.x) {
         if ((s1.begin.y - s1.end.y == s2.begin.y - s2.end.y)
               || ((s1.begin.z - s1.end.z) / (s1.begin.y - s1.end.y) == (s2.begin.z - s2.end.z)
                     / (s2.begin.y - s2.end.y))) {
            return true;
         } else {
            return false;
         }
      } else {
         if (s1.begin.y - s1.end.y == s2.begin.y - s2.end.y) {
            if ((s1.begin.z - s1.end.z) / (s1.begin.x - s1.end.x) == (s2.begin.z - s2.end.z)
                  / (s2.begin.x - s2.end.x)) {
               return true;
            } else {
               return false;
            }
         } else {
            if (((s1.begin.y - s1.end.y) / (s1.begin.x - s1.end.x) == (s2.begin.y - s2.end.y)
                  / (s2.begin.x - s2.end.x))
                  && ((s1.begin.z - s1.end.z) / (s1.begin.x - s1.end.x) == (s2.begin.z - s2.end.z)
                        / (s2.begin.x - s2.end.x))) {
               return true;
            } else {
               return false;
            }
         }
      }
   }
}

Последний раз редактировалось Stilet; 30.11.2013 в 17:22.
shmat_ru вне форума Ответить с цитированием
Старый 30.11.2013, 14:36   #2
shmat_ru
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 27
По умолчанию

Вот продолжение программы
Код:
class Vector extends Segment {
   private int sign(double a) {
      if (a < 0) {
         return -1;
      }
      if (a > 0) {
         return 1;
      }
      return 0;
   }

   Vector() {

   }

   /** конструктор с входными параметрами (координатами концов вектора) */
   Vector(double x_begin, double y_begin, double z_begin, double x_end,
         double y_end, double z_end) {
      begin = new Point(0, 0, 0);
      end = new Point(x_end - x_begin, y_end - y_begin, z_end - z_begin);
   }

   Vector(Point begin, Point end) {
      this.begin = new Point(0, 0, 0);
      this.end = new Point(end.x - begin.x, end.y - begin.y, end.z - begin.z);
   }

   /** конструктор создающий копию объекта */
   Vector(Vector vector) {
      this(vector.begin, vector.end);
   }

   public boolean isCollinear(Vector v1, Vector v2) {
      if (isParallel(v1, v2) && sign(v1.end.x) == sign(v2.end.x)
            && sign(v1.end.y) == sign(v2.end.y)
            && sign(v1.end.z) == sign(v2.end.z)) {
         return true;
      } else {
         return false;
      }
   }
}

Последний раз редактировалось Stilet; 30.11.2013 в 17:22.
shmat_ru вне форума Ответить с цитированием
Старый 30.11.2013, 20:35   #3
shmat_ru
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 27
По умолчанию

Помогите сделать?
shmat_ru вне форума Ответить с цитированием
Старый 02.12.2013, 20:28   #4
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

"Помогите сделать?" - странная формулировка )
А по делу:
1. Определиться с перечнем исключительных ситуаций? (потенциальные операции деления на нуль, логические ошибки, ошибки ввода и т.д.) Выложите его пожалуйста.
2. Следуя по перечню определяем где логически они должны быть вставлены (имеются ввиду обработки этих ситуаций - например, проверка ошибок ввода должна быть сразу после ввода)
3. Описание "реакции" на подобные события. Предлагая вынести их в отдельные методы.
BleStaR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Абстрактные классы в Java. Вопросс по классу Process. dar3dev1l26 Помощь студентам 0 31.07.2013 14:42
Классы и методы в JAVA KIKSa Помощь студентам 0 07.04.2013 19:22
синхронизация потоков в java rogvald Помощь студентам 0 08.09.2011 19:28
Просмотр файловых потоков alexinspir Софт 2 20.11.2009 11:14
Использование файловых переменных britva666 Помощь студентам 4 15.06.2009 11:23