Saya mencoba menghitung luas lingkaran menggunakan kelas dan objek di Jawa, tetapi hasilnya tidak seperti yang saya inginkan. Saya ingin jawaban sebagai 78,5 tetapi luas = 0,0, mengapa? Berikut adalah kode di bawah ini-

package com.company;
import java.util.Scanner;
class Circle{
    double r;
    double area= Math.PI*r*r;
}
public class practice {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Circle c = new Circle();
        System.out.print("Enter the radius of circle: ");
        c.r = sc.nextDouble();
        System.out.println("The area of circle is: "+ c.area);
    }
}

Hasil yang saya dapatkan adalah-

Enter the radius of circle: 5
The area of circle is: 0.0

Process finished with exit code 0
-1
Vedprakash Maliarya 12 Mei 2021, 09:33

3 jawaban

Jawaban Terbaik

Anda harus memahami bahwa kode pada konstruktor akan dijalankan hanya sekali ketika sebuah objek dibuat.

Jika Anda tidak memiliki konstruktor (seperti pada contoh kode di atas) maka kode tersebut akan dijalankan saat program dijalankan. Nilai dari nilai ganda yang tidak diinisialisasi akan menjadi 0.0. Itulah masalah dalam kasus Anda juga. Perhitungan area Anda akan diterjemahkan ke area = 3.14 * 0.0 * 0.0. Saya akan menyarankan mengikuti konvensi dan praktik terbaik dengan cara ini:

     class Circle
    {
        private double radius = 0.0; // Best practice is to declare the variable private and access it through getters & setters

        public Circle(double radius)
        {
            this.radius = radius;
        }

        public double calculateArea()
        {
            return Math.PI * this.radius * this.radius ;
        }

        public double getRadius()
        {
            return radius;
        }

        public void setRadius(double radius)
        {
            this.radius = radius;
        }
    }

    public class Practice
    {
        public static void main(String[] args)
        {
            Circle c = new Circle(5);
            System.out.println("Area of this circle is : " + c.calculateArea());
        }
    }
1
Renis1235 12 Mei 2021, 08:17

Coba kode ini, seharusnya berfungsi. Bandingkan dengan apa yang telah Anda lakukan sejauh ini: Anda menghitung luas sebelum pengguna memasukkan data. Saya menyarankan Anda untuk membaca tentang konstruktor

package com.company;
import java.util.Scanner;
class Circle{
    double r = 0.0;
    double area= 0.0;

    public Circle( double r ){
      this.r = r;
      this.area = Math.PI*this.r*this.r;
    }

}
public class practice {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the radius of circle: ");
        Circle c = new Circle( sc.nextDouble() );
        System.out.println("The area of circle is: "+ c.area);
    }
}
2
Victor Polo De Gyves Montero 12 Mei 2021, 06:40

Pada new Circle(), r diinisialisasi menjadi 0 (karena tidak ada penetapan eksplisit yang diberikan) dan area dihitung dengan ini dan dengan demikian menyimpan nilai 0.

Pada c.r = sc.nextDouble();, c.r ditetapkan ulang untuk menyimpan nilai yang dipindai. Namun, area tidak akan dihitung ulang secara otomatis berdasarkan penetapan ini dan karenanya tetap pada 0.

3
user2886481 12 Mei 2021, 06:42