为了账号安全,请及时绑定邮箱和手机立即绑定

程序将区域显示为“0”

程序将区域显示为“0”

慕妹3242003 2023-11-10 16:16:42
该程序计算球体的面积和体积。这是一个家庭作业问题,所以不能改变太多的格式。我认为这里的主要问题是变量范围,但是我无法识别它。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 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

问题是 :-

  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();


    }


}


查看完整回答
反对 回复 2023-11-10
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

在某些时候你必须调用Data's gdata(),否则r将始终为 0。



查看完整回答
反对 回复 2023-11-10
  • 2 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信