JavaRush /Java блог /Архив info.javarush /Ошибка в учебнике "Изучаем Java" Кети Сьерра и Берт Бейтс...
lookinbody
11 уровень
Москва

Ошибка в учебнике "Изучаем Java" Кети Сьерра и Берт Бейтс

Статья из группы Архив info.javarush
Всем доброго дня. В промежутках между работой и JavaRush, купил и начал читать "Изучаем Java" Кети Сьерра и Берт Бейтс. Сегодня делал очередное домашнее задание в учебнике. У меня никак не получалось решить задачу "class Triangle" стр. 95. В IntelliJ IDEA ответ выходил не тот, что нужно. Убил два часа, перебрал все возможные варианты, ничего не получилось. Плюнул, полез в ответы. А там мое самое первое решение. В итоге, если вбить этот код в IntelliJ IDEA, то ответ будет не тот который написан в учебнике. Ошибка в учебнике Правильное решение из ответов выглядит так:

public class Triangle
{
    double area;
    int height;
    int lenght;
    public static void main(String[] args)
    {
        int x = 0;
        Triangle [] ta = new Triangle[4];
        while (x < 4)
        {
            ta[x] = new Triangle();
            ta[x].height = (x + 1) * 2;
            ta[x].lenght = x + 4;
            ta[x].setArea();
            System.out.print("треугольник " +x+ ", зона");
            System.out.println(" = " + ta[x].area);
            x = x + 1;
        }
        int y = x;
        x = 27;
        Triangle t5 = ta[2];
        ta[2].area = 343;
        System.out.print("y = " + y);
        System.out.println(", зона t5 = " + t5.area);
    }
    void setArea()
    {
        area = (height + lenght) / 2;
    }
}
Ответ по мнению авторов учебника должен быть таким:

треугольник 0, зона = 4.0
треугольник 1, зона = 10.0
треугольник 2, зона = 18.0
треугольник 3, зона = 28.0
y = 4, зона t5 = 343.0
В реальности ответ выглядит так:

треугольник 0, зона = 3.0
треугольник 1, зона = 4.0
треугольник 2, зона = 6.0
треугольник 3, зона = 7.0
y = 4, зона t5 = 343.0
У меня возникло только два варианта ответа:
  1. Техническая не доработка и опечатка.

  2. Книга писалась по версии Java 5.0, я решаю задачу в Java 8.0

Подскажи пожалуйста насколько я прав в своих догадках.
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Николай Седых Уровень 2
9 мая 2022
Друзья, всем привет! А у меня другой вопрос : понять не могу головоломку "куча проблем", страница 96. Объячните, кто-нибудь, пожалуйста, почему мы приравниваем ссылки к ссылкам? Может я что-то не понимаю
blacky Уровень 23
6 мая 2015
Нашел две ошибки в этом коде:
int lenght; должно быть int length;
Вторая серьёзная:
area = (height + length) / 2;
в учебнике не сумма, а произведение:
area = (height * length) / 2;
mrzzzio Уровень 30
5 мая 2015
Сначала я, не вникая в код, решил что это опечатка при переводе и посмотрел в оригинал. Там ответы аналогичные. Проверил в IDE ответы как у тебя. Версия джавы тут не при чем, даже решив в уме ответы не сходятся.