Java Get и Set возвращают значение 0 для операции - PullRequest
0 голосов
/ 12 сентября 2018

У меня проблемы с получением значения операции. Все, что я получаю в результате, это 0. Я перепробовал много вещей, но, похоже, ничего не работает. Я новичок, так что извините, если это что-то действительно простое. Я искал похожие проблемы, но я не мог найти ту, которая соответствовала бы моей проблеме

public class Circle {
    double rad, C, D, A, A2, V;

    public double getRad(){
        return rad;
    }

    void setRad(double valueRad){
        this.rad = valueRad;
    }

    public double getCircumference(){
        return C;
    }

    void setCircumference(double Circ){
        Circ = (rad*2)*(Math.PI);
        this.C = Circ;
    }
}

И это мое главное:

public class Main {
    public static void main(String[] args) {

        Circle res = new Circle();

        res.setRad(5.80);

        System.out.println("The circumference is: "+res.getCircumference()+" cm");
    }
}

Ответы [ 4 ]

0 голосов
/ 12 сентября 2018

Проблема здесь в том, что ваш C не будет обновляться при установке rad.

Так что, когда вы вызываете сеттер для rad, вам нужно не только обновить radно также C.Затем, когда вы звоните getCircumference, значение C будет актуальным с rad.

0 голосов
/ 12 сентября 2018

я думаю, что ты что-то забыл. Я предлагаю вам использовать одно из этих изменений:

1

void setRad(double valueRad){
        this.rad = valueRad;
        this.C = (rad*2)*(Math.PI);
    }

или 2:

public double getCircumference(){
        return (rad*2)*(Math.PI);
    }
0 голосов
/ 12 сентября 2018

По рабочему процессу вы должны вызвать setCircumference перед getCircumference

   Circle res = new Circle();
   res.setRad(5.80);
   res.setCircumference();
   System.out.println("The circumference is: " + res.getCircumference() + " cm"); 
   // output is The circumference is: 36.4424747816416 cm

Класс круга должен быть

class Circle {
double rad, C, D, A, A2, V;

public double getRad(){
    return this.rad;
}

void setRad(double valueRad){
    this.rad = valueRad;
}

public double getCircumference(){
    return this.C;
}

void setCircumference(){
    this.C=(this.rad*2)*(Math.PI);
}
}
0 голосов
/ 12 сентября 2018

Ваш код расчета находится в методе setCircumference(), который никогда не вызывается. При вызове метода getCircumference() возвращается значение поля по умолчанию C, равное 0.0.

Один из способов исправить это - вычислить значение в методе getCircumference():

public class Circle {
  private double rad;

  public void setRad(double rad) {
    this.rad = rad;
  }

  public double getCircumference() {
    return rad * 2 * Math.PI;
  }
}
...