Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] Иерархия классов 
:(
    Опции темы
deuterium
Дата 25.3.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.2.2008

Репутация: нет
Всего: нет



Помогите пожалуйста создать иерархию классов:
Точка-Круг-Цистерна.
Класс Цистерна должен содержать метод для вычисления объема цистерны.

Создать метод Main, в котором создается две цистерны и определяется, сколько полных меньших цистерн можно вылить в большую цистерну.
PM   Вверх
Shurr
Дата 26.3.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 24.10.2006

Репутация: 1
Всего: 7



Так пойдет?

Point.java, класс вырожден
Код
public class Point {
}


Circle.java
Код
public class Circle extends Point {

    private int radius;

    public Circle(int radius) {
        if (radius <= 0) throw new IllegalArgumentException("Radius must be more than zero"); 
        this.radius = radius;
    }

    public int getRadius() {
        return radius;
    }

    public double getArea() {
        return Math.PI * radius * radius;
    }

}


Cistern.java
Код
public class Cistern extends Circle {

    private int height;

    public Cistern(int radius, int height) {
        super(radius);
        if (height <= 0) throw new IllegalArgumentException("Heigth  must be more than zero"); 
        this.height = height;
    }

    public int getHeight() {
        return height;
    }

    public double getVolume() {
        return getArea() * height;
    }
    
}


Main.java
Код
public class Main {

    public static void main(String[] args) {
        Random random = new Random();

        // First, bug cistern
        int radius1 = random.nextInt(10) + 10;
        int height1 = random.nextInt(5) + 5;
        Cistern cistern1 = new Cistern(radius1, height1);
        double volume1 = cistern1.getVolume();

        // Second, small cistern.
        int radius2 = random.nextInt(10) + 1;
        int height2 = random.nextInt(5) + 1;
        Cistern cistern2 = new Cistern(radius2, height2);
        double volume2 = cistern2.getVolume();

        int count = (int) (volume1 / volume2);

        System.out.println("Cistern 1: radius: " + radius1 + ", heigth: " + height1 + ", volume: " + volume1);
        System.out.println("Cistern 2: radius: " + radius2 + ", heigth: " + height2 + ", volume: " + volume2);
        System.out.println("Cistern 1 has " + count + " full volumes of the cistern 2");
    }

}

PM MAIL   Вверх
deuterium
Дата 26.3.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.2.2008

Репутация: нет
Всего: нет



Shurr, Спасибо за помощь.
Только в Main почему-то выдает ошибки в строках с nextInt .
И еще, как правильно объединить все эти классы в одну прогу. Я создал для всех файлы с расширением .java, но почему-то выдает какие-то ошибки.



Еще, если можешь, помоги с этой прогой: http://forum.vingrad.ru/forum/topic-202591.html
Она мне просто на завтра нужна. А с цистернами пока может подождать.
PM   Вверх
Shurr
Дата 27.3.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 24.10.2006

Репутация: 1
Всего: 7



Да, сорри, отрезал импорт. В Main.java добавь первой строкой:
Код
import java.util.Random;
 
После этого все должно компилироваться и запускаться без ошибок.
PM MAIL   Вверх
deuterium
Дата 28.3.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.2.2008

Репутация: нет
Всего: нет



Shurr, добавил импорт - всё компилируется, спасибо.

Только как правильно объединить все эти классы в одну прогу. Я создал для всех файлы с расширением .java, также скопировал все эти классы в Main.java, но почему-то выдает такую ошибку:

44: class, interface, or enum expected
import java.util.Random;

И еще если можешь, помоги и с этой прогой пожалуйста: http://forum.vingrad.ru/forum/topic-203276.html
PM   Вверх
Shurr
Дата 30.3.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 24.10.2006

Репутация: 1
Всего: 7



Цитата(deuterium @ 28.3.2008,  19:24)
Только как правильно объединить все эти классы в одну прогу. Я создал для всех файлы с расширением .java, также скопировал все эти классы в Main.java, но почему-то выдает такую ошибку:

44: class, interface, or enum expected
import java.util.Random;

Делаешь отдельный файл для каджого класса: Point.java, Circle.java, Cistern.java, Main.java, в каждый вставляешь код этого класса. Ложишь их в одну папку. 

Компилируешь: 
javac Main.java
Получаешь в той же папке четыре файла, которые составляют твою программу: Point.class, Circle.class, Cistern.class, Main.class

Запускаешь:
java Main

Все.

Что ты имеешь в виду под "одной прогой"? jar? Или что?

Это сообщение отредактировал(а) Shurr - 30.3.2008, 22:28
PM MAIL   Вверх
deuterium
Дата 31.3.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.2.2008

Репутация: нет
Всего: нет



Shurr, Огромное спасибо за помощь.
Я именно это и имел ввиду. Теперь всё отлично работает. Ещё раз большое спасибо за помощь.

И последняя просьба. Помоги пожалуйста и с этой прогой: http://forum.vingrad.ru/forum/topic-203276.html
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.