Неправильное поведение программы (Java)

173
02 июля 2018, 19:00

Описание проблемы скорее будет понятнее представленным кодом:

package com.company;
class Box {
    double widht;
    double heidht;
    double depth;
    //---сконструировать клон объекта
    Box (Box ob){ //-передать объект
        widht = ob.widht;
        heidht = ob.heidht;
        depth = ob.depth;
    }
    //---констуктор, применяемый при указании всех размеров
    Box (double w, double h, double d){
        widht = w;
        heidht = h;
        depth = d;
    }
    //---конструктор при отсутствии размеров
    Box(){
        widht = -1;
        heidht = -1;
        depth = -1;
    }
    //---констуктор для куба
    Box (double len){
        widht = heidht = depth = len;
    }
    //---посчитать и вернуть объем
    double volume (){
        return widht * heidht * depth;
    }
}
class BoxWeight extends Box{
    double weight; //---вес объекта
    //---констуктор
    BoxWeight(double w, double h, double d, double m){
        weight = w;
        heidht = h;
        depth = d;
        weight = m;
    }
}
public class Example {
    public static void main(String[] args) {
        BoxWeight myBox1 = new BoxWeight(10, 20, 15, 34.3);
        BoxWeight myBox2 = new BoxWeight(2, 3, 4, 0.076);
        double vol;
        vol = myBox1.volume();
        System.out.println("Объем myBox1 = " + vol);
        System.out.println("Вес myBox1 = " + myBox1.weight);
        System.out.println();
        vol = myBox2.volume();
        System.out.println("Объем myBox2 = " + vol);
        System.out.println("Вес myBox2 = " + myBox2.weight);
        System.out.println();
    }
}

Выполнение кода дает результат:

Объем myBox1 = -300.0 Вес myBox1 = 34.3

Объем myBox2 = -12.0 Вес myBox2 = 0.076

А должен дать такой:

Объем myBox1 = 3000.0 Вес myBox1 = 34.3

Объем myBox2 = 24.0 Вес myBox2 = 0.076

Не понимаю в чем загвоздка.

Answer 1

Ошибка тут:

BoxWeight(double w, double h, double d, double m){
    weight = w;
    heidht = h;
    depth = d;
    weight = m;
}

В первой строке вместо widht вы присваиваете в weight.

P.S. heidht правильно height, widht правильно width

READ ALSO
Как получить создателя файла в git

Как получить создателя файла в git

Всем привет! Как можно получить автора какого-либо файла, сохраненного в git репозитории, с помощью Java (использую класс JGit для подключения к git) ? И вообще...

178
Использование метода split класса String в Java

Использование метода split класса String в Java

В данный момент изучаю по книгам Ввод-ВыводЗадача такая необходимо получить из потока ввода с клавиатуры 2-а числовых значения, которые при...

177
Получение данных через Message<String> ( io.vertx.core.eventbus)

Получение данных через Message<String> ( io.vertx.core.eventbus)

Как передать параметр метода Message<String> msg в обычный Set метод?

138