为什么我不能叫新多边形?

时间:2019-09-29 17:44:39

标签: java

我的老师给了我

  1. 在n边正则多边形中,所有边的长度相同,并且所有角度的度数相同。设计一个名为RegularPolygon的类,其中包含: 名为n的私有int数据字段,用于定义Polygon中默认值为3的边数。 名为side的私有双数据字段,用于存储边的长度(默认值为1)。 名为X的私有双数据字段,用于定义多边形中心的x-坐标,默认值为0。 名为Y的私有双数据字段,用于定义多边形中心的y-坐标,默认值为0。 一个构造函数,该构造函数创建具有指定边数,边长以及x-和y-坐标(值从参数传递到字段)的规则多边形。 所有数据字段的访问器方法。 方法getPerimeter()返回多边形的周长。 方法getArea()返回多边形的面积。公式为Area = n * s * s /(4 * tan(PI / n))。

2)编写一个RegularPolygonTest类,允许用户输入数据字段,然后程序会打印出规则多边形的周长和面积。

到目前为止,这是我的代码:

public class RegularPolygon{
    private int n;
    private double side, x, y;
    public RegularPolygon(){
        n = 3;
        side = 1;
        x = 0; 
        y = 0;
    }

    public RegularPolygon(int n, double side){
        this.n = n;
        this.side = side;
        x = 0;
        y = 0;
    }
    public RegularPolygon(int sn, double length, double x_coord, double y_coord){
        n = sn;
        side = length;
        x = x_coord;
        y = y_coord;
    }

    //set n to the user input
    public void setN(int other){
            n = other;
    }
    public int getN(){
        return n;
    }
    //set side to userinput
    public void setSide(double otherside){
        side = otherside;
    }
    public double getSide(){
        return side;
    }
    //set x to user input
    public void setX(int x_co){
        x = x_co;
    }
    public double getX(){
        return x;
    }
    //set y to user input
    public void setY(int they){
        y = they;
    }
    public double getY(){
        return y;
    }
//find perimeter
    public double getPerimeter(){
        return n * side;
    }
//find area
    public double getArea(){
        double s_squ = side * side;
        double pin = Math.PI/n;
        double tangent = Math.tan(pin);
        return (n*s_squ)/(4*tangent);
    }

}
import java.util.Scanner;
public class RegularPolygonTest{
    public static void main(String[] args){
        Scanner yer = new Scanner(System.in);
        //number of sides
        System.out.println("Enter number of sides: ");
        int sn = yer.nextInt();

        //length of sides
        System.out.println("Enter length of sides: ");
        double length = yer.nextDouble();

        //x-coord
        System.out.println("Enter the x-coordinate of the center: ");
        double x_coord = yer.nextDouble();

        //y-coord
        System.out.println("Enter the y-coordinate of the center: ");
        double y_coord = yer.nextDouble();

        if (x_coord == 0 && y_coord == 0){
            RegularPolygon rp = new RegularPolygon(sn, length);
        }
        else if (sn > 3 && length > 1){
            RegularPolygon rp = new RegularPolygon(sn, length, x_coord, y_coord); 

        }
        else{
            RegularPolygon rp = new RegularPolygon();
        }
        System.out.println("The perimeter of the " + rp.getN() + "-sided polygon is : "+ rp.getPerimeter() +". And the are is : "+ rp.getArea());
    }

}

我得到的错误是IDE找不到符号,它指向最后一行中的所有rp。我该如何解决该错误?

1 个答案:

答案 0 :(得分:2)

所有rp都在块内。您需要在ifs之前定义一个可能未初始化的rp,并在ifs中使用此公共rp。