JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Подскажите, пожалуйста, что не верно?
Карина
12 уровень
  • 11.10.2021
  • 418просмотров
  • 7комментариев

Подскажите, пожалуйста, что не верно?

Вопрос по задаче Заполнить класс прямоугольник (Rectangle)
Java Syntax,  6 уровень,  6 лекция
Решен


Параметрами прямоугольника (класс Rectangle) будут top, left, width, height (верхняя координата, левая, ширина и высота).
Создай для него как можно больше методов конструкторов.

Примеры:

  • заданы 4 параметра: left, top, width, height;
  • ширина/высота не задана (оба равны 0);
  • высота не задана (равна ширине) - создаём квадрат;
  • создаём копию другого прямоугольника (он и передаётся в параметрах).

Требования:
  • У класса Rectangle должны быть переменные top, left, width и height с типом int.
  • У класса должен быть хотя бы один конструктор.
  • У класса должно быть хотя бы два конструктора.
  • У класса должно быть хотя бы три конструктора.
  • У класса должно быть хотя бы четыре конструктора.
package com.javarush.task.jdk13.task05.task0520; /* Заполнить класс прямоугольник (Rectangle) */ public class Rectangle { //напишите тут ваш код int top; int left; int width; int height; Rectangle(int top, int left, int height, int width) { this.top = top; this.left = left; this.height = height; this.width = width; } /*Rectangle(int top, int height, int width) { this.top = top = left; this.height = height; this.width = width; }*/ Rectangle(int height, int top) { this.height = height = width; this.top = top = left; } Rectangle() { top = left = 0; width = height = 0; } Rectangle(Rectangle rectangle) { this.top = rectangle.top; this.left = rectangle.left; this.width = rectangle.width; this.height = rectangle.height; } public static void main(String[] args) { //Rectangle rectangle = new Rectangle(10,10,15,15); } }
0
Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
Уровень 27
11 октября 2021, 09:12
1. Сделай конструкторы публичными 2. Исправь конструктор
Rectangle(int height, int top) {
    this.height = height = width;
    this.top = top = left;
}
Ты здесь не используешь значение аргументов.
0
Карина
Уровень 12
11 октября 2021, 09:16
В смысле? Все равно не поняла, что не так? Извини, можно чуть развернутее для 6 уровня ))))
0
Карина
Уровень 12
11 октября 2021, 09:17
насчет public поняла, а по второму пункту поясни, пожалуйста.
0
hidden #598481
Уровень 27
11 октября 2021, 09:30
тебе внутри конструктора надо присвоить значения четырем полям создаваемого объекта, используя значения двух аргументов. Грубо говоря так:
this.height = height;
this.width = height;
...
Ты хотела сделать это, используя две операции в одной строчке и не разобралась в последовательности действий.
this.height = height = width;
Поскольку у тебя внутри конструктора нет локальной переменной width, то твое width - это то же самое, что и this.width, то есть ты обращаешься к полю класса. А поскольку ты еще не инициализировала поле класса, то оно имеет значение 0. Ну а поскольку оператор присваивания имеет ассоциативность справа налево, то сначала выполняешь присваивание height = width, то есть записываешься имеющийся у тебя по умолчанию 0 из поля width в локальную переменную height вместо того значения, которое ты получила при вызове конструктора, и потом этот же ноль ты записываешь в переменную this.height. Лучше вообще так не писать, потому что ошибиться легко, а разобраться не так просто, что куда присваивается. Поэтому лучше писать отдельно, по одному полю на строчке. А еще лучше вызывать один конструктор из другого.
this(top, top, height, height);
эта команда вызовет конструктор с четырьмя аргументами.
0
Ksenia VolkovaJava Developer в DXCMaster
11 октября 2021, 09:11
Сделай конструкторы публичными.
0
Карина
Уровень 12
11 октября 2021, 09:15
Уже сделала. Вопрос по этому поводу. Читала, что по умолчанию все и так public? Я заблуждаюсь?
0
Ksenia VolkovaJava Developer в DXCMaster
11 октября 2021, 09:17
Нет, по умолчанию будет package private. Только у интерфейсов по умолчанию будет public.
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush