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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2018, 12:40   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию проблемы с переходом на язык Java, компиляция приложения

Ребят, всем привет, недавно начал изучать Java, перехожу с делфи и С# на Яву, есть несколько вопросов...сначала спрошу о том, почему не компилируется программа.

Есть 3 класса, 2 из них наследуются от первого, в головном методе класса main программа выдает ошибку на скрине, привожу код и скрин ошибки, среда eclips.

Код:

import java.util.ArrayList;

class Point {

    /**
     * Пустой конструктор
     */
    Point() {}

    /**
     * Метод класса, который рассчитывает площадь фигуры
     */
    double getSquare() {
        return 0;
    }

    /**
     * Метод класса, который рассчитывает периметр фигуры
     */
    double getPerimeter() {
        return 0;
    }

    /**
     * Метод класса, возвращающий описание фигуры
     */
    String getDescription() {
        return "Точка";
    }
}

class LineSegment extends Point {

    LineSegment(double segmentLength) {
        this.segmentLength = segmentLength;
    }

    double segmentLength; // Длина отрезка

    /**
     * Переопределенный метод класса, который рассчитывает площадь отрезка
     */
    double getSquare() {
        return 0;
    }

    /**
     * Переопределенный метод класса, который рассчитывает периметр отрезка
     */
    double getPerimeter() {
        return this.segmentLength;
    }

    String getDescription() {
        return "Отрезок длиной: " + this.segmentLength;
    }
}
class Triangle extends Point {

    /**
     * Конструктор класса. Принимает на вход три параметра:
     * длина стороны А, длина стороны Б,
     * угол между этими сторонами(в градусах)
     */
    Triangle(double sideA, double sideB, double angleAB) {
        this.sideA = sideA;
        this.sideB = sideB;
        this.angleAB = angleAB;
    }

    double sideA; //Поле класса, хранит значение стороны А в описываемом треугольнике
    double sideB; //Поле класса, хранит значение стороны Б в описываемом треугольнике
    double angleAB; //Поле класса, хранит угла(в градусах) между двумя сторонами в описываемом треугольнике

    /**
     * Метод класса, который рассчитывает площадь треугольника
     */
    double getSquare() {
        double square = (this.sideA * this.sideB * Math.sin(this.angleAB * Math.PI / 180))/2;
        return square;
    }

    /**
     * Метод класса, который рассчитывает периметр треугольника
     */
    double getPerimeter() {
        double sideC = Math.sqrt(Math.pow(this.sideA, 2) + Math.pow(this.sideB, 2) - 2 * this.sideA * this.sideB * Math.cos(this.angleAB * Math.PI / 180));
        double perimeter = this.sideA + this.sideB + sideC;
        return perimeter;
    }

    String getDescription() {
        return "Треугольник со сторонами: " + this.sideA + ", " + this.sideB + " и углом между ними: " + this.angleAB;
    }
}





public class main {
	
	
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	    ArrayList figures = new ArrayList();

        //добавляем три разных объекта в массив figures
        figures.add(new Point());
        figures.add(new LineSegment(133));
        figures.add(new Triangle(10, 17, 55));
        
        Point figure ;
        
        for (int i = 0; i < figures.size(); i++) {
            //для каждого объекта, который находится в массиве
            //выводим его описание, периметр и площадь
        	 figure = figures.get(i);
            System.out.println(figure.getDescription());
            System.out.println("Периметр фигуры: "+figure.getPerimeter());
            System.out.println("Площадь фигуры: "+figure.getSquare());
        }
        

      
    }	

	

}
Есть небольшая оговорка, что при типизировании ArrayList все работает под windows 7, но под Ubuntu - нет
Код:

		
	    ArrayList <Point> figures = new ArrayList<>();
Изображения
Тип файла: png Безымянный.png (38.7 Кб, 116 просмотров)
from dark to light)

Последний раз редактировалось Алексей_2012; 09.05.2018 в 12:46.
Алексей_2012 вне форума Ответить с цитированием
Старый 09.05.2018, 13:34   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
при типизировании ArrayList все работает под windows 7, но под Ubuntu - нет
Видимо там старая версия Джавы.
Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Код:
    /**
     * Метод класса, который рассчитывает площадь фигуры
     */
Зачем первая половина слов?

И откуда вообще у точки площадь и периметр?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 09.05.2018 в 17:15.
Alex11223 вне форума Ответить с цитированием
Старый 09.05.2018, 16:49   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
почему не компилируется программа
Раз ArrayList не типизирован, информация о типе объектов при помещении в него теряется. Нужно делать явное преобразование при извлечени

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
под Ubuntu - нет
Под Ubuntu, небось, стоит OpenJDK, причём достаточно древний. Поставьте нормальный оракловский JDK
Black Fregat вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляция сервера на языке java Sasha94 Общие вопросы по Java, Java SE, Kotlin 0 21.10.2016 21:39
Программная компиляция из приложения. Rockot Общие вопросы Delphi 3 04.09.2016 12:15
Компиляция приложения в разных режимах ДралсяСошибками Общие вопросы Delphi 3 18.08.2015 21:37
Компиляция java, и упаковка в jar VY_CMa Общие вопросы по Java, Java SE, Kotlin 0 13.08.2012 15:00
Публикация(компиляция) приложения _PROGRAMM_ Общие вопросы .NET 33 26.02.2010 07:27