2015-10-20 2 views
-4
public class Weight { 

    public static void main(String[] args) { 
     Weight test1 = new Weight(500.12345); 
     double test4kilo = test1.getKilograms(); 
     double test4kilo3 = test1.getPounds(); 
     double test4kilo4 = test1.getOunces(); 
     System.out.println(+test4kilo+", "+test4kilo3+", "+test4kilo4); 
    } 


    double w; 

    public Weight(double p){ 
     p = w; 
    } 

    public double getPounds(){ 
     return w; 
    } 

    public double getKilograms(){ 
     return w*0.45359237; 
    } 

    public double getOunces(){ 
     return w*(1/16); 
    }  
} 

Всякий раз, когда я запускаю этот код, он печатает «0.0, 0.0, 0.0», что является неправильным ответом на вычисления в методах. Может кто-нибудь скажет мне, почему это происходит? Благодаря!Java-новичок: почему это не дает мне правильный результат?

ответ

3

изменение

public Weight(double p){ 
    p = w; 
} 

в

public CopyOfTest1(double p){ 
     this.w=p; 
    } 

вам необходимо установить значение w

Выход

226.85218097807652, 500.12345, 0.0 
  • Включить ответ от @Eran, а также.
+0

Этот вывод по-прежнему неверен. Последнее число не должно быть 0.0. – Eran

+0

@ Настоящий референт для вашего ответа –

0

getOunces() неправ. Когда вы конвертируете фунты в унции, вы должны умножаться на 16, а не делиться.

Оно должно быть:

public double getOunces() { 
    return w*16; 
} 

Кроме того, исправить опечатку в конструкторе, чтобы сохранить переданный вес вашего объекта:

public Weight(double p){ 
    w = p; 
} 

Вы получите правильный вывод :

226.85218097807652, 500.12345, 8001.9752 
1

Назначение является справа налево

public Weight(double p) { 
    w = p; 
} 
0

Неправильно:

public Weight(double p){ 
    p = w; 
} 

Должен быть:

public Weight(double p){ 
    w = p; //Chnaged 
} 

Вы missmatch переменной распайки.

0

В конструкторе вы неправильно приравниваете. сделать это вместо того, чтобы:

public Weight(double p){ 
    w=p; 
} 
0

вам необходимо изменить свой код в конструкторе

использовать это:

public Weight(double p) 
    { 
    w = p; 
    } 

вы получали этот вопрос, потому что вы дающую значение р = ш и начальное значение w равно 0 , так что вы получаете 0 во всех , , значение права переходит в левую переменную

Смежные вопросы