Программа отображает область как '0' - PullRequest
0 голосов
/ 19 октября 2019

Программа рассчитывает площадь и объем сферы. Это вопрос домашнего задания, поэтому я не могу изменить большую часть формата.

Основная проблема, которую я считаю здесь, - это область действия переменной, но я не могу ее идентифицировать.

import  java.util.*;

class Data

{

     double r;
     public void gdata()

     {

          System.out.println("Enter Radius");
          Scanner s = new Scanner(System.in);
          r=s.nextFloat();
     }

}

class Area extends Data

{

     double area;
     public void calculate()
     {area = r*r*3.14;}
     public void display()

    {

        Area obj = new Area();
        obj.calculate();
        System.out.println("Area of Circle= "+area);}

    }
}

class  Volume extends Area 

{

    final double pi=3.141;
    double v;
    public void calculate()
    {v=(4*r*r*r*pi)/3;}
    public void display()

    {   

        Volume obj = new Volume();
        obj.calculate();
        System.out.println("Volume of Sphere= "+v);}

    }


class Postlab

{

    public static void main(String args[])

    {

        Area obj1 = new Area();
        Area obj2 = new Volume();
        obj1.display();
        obj2.display();

    }

}

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Проблема в следующем: -

  1. Вы никогда не вызывали gData(), который инициализирует ваш радиус.

  2. Вы создавалиновый объект, когда вы звоните display(). вместо вызова calculate() из того же объекта.

Пожалуйста, найдите рабочий код ниже: -

import  java.util.*;

class Data

{

    double r;
    public void gdata()

    {

        System.out.println("Enter Radius");
        Scanner s = new Scanner(System.in);
        r=s.nextFloat();
    }

}

class Area extends Data

{

    double area;
    public void calculate()
    {area = r*r*3.14;}
    public void display()

    {

        this.gdata();
        this.calculate();
        System.out.println("Area of Circle= "+area);}

}


class  Volume extends Area

{

    final double pi=3.141;
    double v;
    public void calculate()
    {v=(4*r*r*r*pi)/3;}
    public void display()

    {

        this.gdata();
        this.calculate();
        System.out.println("Volume of Sphere= "+v);}

}


class Postlab

{

    public static void main(String args[])

    {

        Area obj1 = new Area();
        Area obj2 = new Volume();
        obj1.display();
        obj2.display();

    }

}
0 голосов
/ 19 октября 2019

В какой-то момент вы должны позвонить Data gdata(), иначе r всегда будет 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...