【问题标题】:What's wrong with my code ? Why it is not calculating the area of circle correctly? [closed]我的代码有什么问题?为什么它不能正确计算圆的面积? [关闭]
【发布时间】:2018-01-21 11:12:42
【问题描述】:

我的代码有什么问题?为什么不计算面积 在圆形作为形状的情况下正确环绕?每次都是 计算圆的面积等于 0。其余代码正在工作 很好。

  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');
        }
    }

我的代码有什么问题?为什么不计算面积 在圆形作为形状的情况下正确环绕?每次都是 计算圆的面积等于 0。其余代码正在工作 很好。

【问题讨论】:

  • 欢迎来到 Stack Overflow!您在问题中发布了很多代码,这使我们(以及未来的读者)不清楚问题出在哪里。请将您的问题代码减少到 10 行或更少。请参阅:How to create a Minimal, Complete, and Verifiable exampleHow to Debug Small Programs
  • 我的猜测:您已经创建了 2 个变量 c_area; 本地和实例一。删除本地一。您将区域值设置为本地 c_area 但打印仍然为 0(默认)的实例一

标签: java area


【解决方案1】:

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

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

如果将 c_area 设为局部变量而不是实例变量,则在内部声明,请尝试此操作

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

希望对你有帮助..

【讨论】:

  • 类输入{ float c_area; int s_area,r_area;输入(int side1,String type) { if(type.equals("circle")) { c_area=3.14fside1*side1; } 其他{ s_area=side1*side1; } } 输入(int l,int b){ r_area=lb; }
  • 它仍然没有给出正确的答案。仍然是零。
  • if(select.equals("cirlce")) : 输入类的 area 方法中的圆形拼写错误。这就是问题。希望能解决
  • 谢谢它的工作!编码愉快!
【解决方案2】:

看看这两行:

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

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

注意:如果您是 Java 新手,您应该知道它遵循某些代码约定。你应该用大写样式命名你的类,你的变量名应该是驼峰式

【讨论】:

    【解决方案3】:

    首先,最好使用“Math.PI”而不是只取 3.14f,它更准确;

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


    如果这是你的全部代码,我个人会创建一个方法来计算面积......并且不要使用其他类

    【讨论】:

      【解决方案4】:

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

      唯一的问题是 void area(String select){ } 方法中有错字

      if(select.equals("cirlce")) 应该是if(select.equals("circle"))

      圆圈拼写错误。

      【讨论】:

        猜你喜欢
        • 2022-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2013-02-11
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多