2016-05-26 2 views
0

Я почесал голову здесь ...метод класса возвращения 0

Проблема: Я делаю основной метод для расчета два поля объекта и возвращает значение. По какой-то причине он возвращает нулевое значение. Я знаю, что я пропускаю что-то невероятно простое, но это удар ногой.

Код:

public class Tools { 

    // Instance variables 
    private String type; 
    private int age; 
    private int eol; 
    private Double lifeLeft; 

    // Constructor 
    public Tools(String type, int age, int eol) { 
    this.type = type; 
    this.age = age; 
    this.eol = eol; 
    } 

    public String toString() { 
    return type + " has reached " + lifeLeft() + "% of its life expectancy."; 
    } 

    public Double lifeLeft() { 
    lifeLeft = (double)((this.age/this.eol) * 100); 
    return lifeLeft; 
    } 
} 

Я просто пытаюсь вычислить lifeLeft = возраст/EOL * 100, чтобы получить процент. Я отследил проблему до моего метода lifeLeft(). По какой-то причине он не получает возраст и эл объекта. Я выполнил тест System.out.println (age, eol) и т. Д., И значения переменных отражают 0.

Sidenote: Я вызываю super.toString() из объекта подкласса, но я не думаю, что дело здесь.

Подкласс для справки в случае его применения.

public class Wrench extends Tools { 

    // Instance variables 
    private Double capacity; 

    // Constructor 
    public Wrench(String type, int age, int eol, Double capacity) { 
    super(type, age, eol); 
    this.capacity = capacity; 
    } 

    public String toString() { 
    return "Your " + capacity + "\" " + super.toString(); 
    } 
} 
+0

целочисленное деление –

ответ

2

(this.age/this.eol) не имеет значения, так как целочисленное деление округляется вниз.

+0

только если возраст eol – LeTex

+0

@LeTex, но это не проблема OP. – djechlin

+0

@djechlin Большое спасибо. Я потратил столько времени, глядя на него, что мне нужно было уйти. Это было именно то, что происходило. – Zeeboot