我的代码出了什么问题?为什么不正确计算圆的面积?

时间:2017-08-13 12:50:45

标签: java area

  

我的代码出了什么问题?为什么不计算面积   如果圆形作为形状,正确cirlce?每次都是   计算圆的面积等于0.Rest的代码正在工作   细

  package constructor;
    import java.util.Scanner;

    class input{
        float c_area;
        int s_area,r_area;
        input(int side1,String type)
        {
            if(type.equals("circle"))
            {
                c_area=3.14f*side1*side1;
            }
            else{
                s_area=side1*side1;
            }
        }
        input(int l,int b){
            r_area=l*b;
        }
        void area(String select){
            if(select.equals("cirlce"))
            {
                System.out.println("Area is: "+c_area);
            }
            else if(select.equals("square")){
                System.out.println("Area is: "+s_area);
            }
            else
            {
                System.out.println("Area is:"+r_area);
            }
        }
    };

    public class shape {

        public static void main(String[] args) {
            String name;
            char ch;
            Scanner obj=new Scanner(System.in);
            do{
            System.out.print("ENTER THE SHAPE TYPE:");
            name=obj.next();
            if(name.equals("circle"))
            {
            int radius;
            System.out.print("Enter the radius: ");
            radius=obj.nextInt();
            input a=new input(radius,name);
            a.area(name);
            }
            else if(name.equals("rectangle"))
            {
            int len,bre;
            System.out.print("Enter LENGTH & BREADTH: ");
            len=obj.nextInt();
            bre=obj.nextInt();
            input x=new input(len,bre);
            x.area(name);
            }
            else if(name.equals("square"))
            {
            int side;
            System.out.print("Enter side: ");
            side=obj.nextInt();
            input x=new input(side,name);
            x.area(name);
            }
            System.out.println("continue: Y or N:");
            ch=obj.next().charAt(0);
            }while(ch=='y' || ch=='Y');
        }
    }
  

我的代码出了什么问题?为什么不计算面积   如果圆形作为形状,正确cirlce?每次都是   计算圆的面积等于0.Rest的代码正在工作   细

4 个答案:

答案 0 :(得分:2)

问题在于输入类中的这段代码:

if(type.equals("circle"))
        {float c_area;
            c_area=3.14f*side1*side1;
        }

如果将c_area设为局部变量而不是实例变量,则在内部声明c_area,而不是试试这个

if(type.equals("circle"))
        {
            this.c_area=3.14f*side1*side1;
        }

希望有所帮助......

答案 1 :(得分:0)

对所有人来说,使用“Math.PI”只需要3.14f就可以更准确;

在我的Oppinoin中,您应该使用静态方法来计算“c_area”(使用Parametes(半径,类型)和imedietey返回该值。  我没有看到创建对象的需要,因此您可以删除您的构造函数(因为以后不需要使用此对象。

如果这是你的整个coode我个人只是创建一个方法来计算区域..而且只是不要使用另一个类

答案 2 :(得分:0)

他的程序非常好,没有编码错误。

唯一的问题是空区域中存在拼写错误(String select){}方法

if(select.equals("cirlce"))应为if(select.equals("circle"))

圆圈拼写错误。

答案 3 :(得分:-1)

看看这两行:

float c_area; c_area=3.14f*side1*side1;

当您在类范围声明中已经有一个以相同方式命名的变量时,您在构造函数中声明了一个名为c_area的变量。因此编译器会忽略类级变量,而是计算构造函数级变量。当然,类级变量默认不会改变并保持为零。只需从构造函数中删除float c_area;即可,

注意:如果您是Java新手,您应该知道它遵循某些代码约定。您应该使用UpperCase样式命名您的类,并且您的变量名称应该是camelCased