当前位置: 首页 > 知识库问答 >
问题:

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

何雅惠
2023-03-14

我的老师给了我这个

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

2)编写一个正则化PolygonTest类,允许用户输入数据字段,您的程序打印出正则多边形的周长和区域。

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

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个答案

沈华晖
2023-03-14

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

 类似资料:
  • 问题内容: 我正在尝试编写一个使用Redis的AWS Lambda函数。当我运行以下代码时: 我有这样的答案: 和日志看起来像: 恕我直言,这意味着调用了回调,但没有任何反应。 删除客户端的初始化后,我会看到正确的响应。 有任何想法吗? 问题答案: 从官方文档中: 调用回调时,Lambda函数仅在Node.js事件循环为空之后退出。 由于您正在调用回调,但是您的Lambda函数调用并未结束,因此看

  • 问题内容: 如果html文件是本地文件(在我的C驱动器上),则可以使用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么? 任何可能的解决方法? 问题答案: 如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。 解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严

  • 我尝试连接angular前端和springboot后端... 所以任何人都可以告诉我这里的错误在哪里....?

  • 问题内容: 我总是想知道为什么这么称呼这个对象? 您的请求正文不必为XML格式。同样,可以将从服务器接收的数据提取为JSON,XML,HTML或纯文本。XML在此对象中没有扮演重要角色。这是陈词滥调吗?首次创建时该对象是什么? 问题答案: 由Microsoft的Outlook Web Access团队发明。这个高度创新的团队以前为我们提供了远程脚本编写,这是“ AJAX”样式开发的开始。远程脚本编

  • null null 我在/s/chart/img/purple.png中有一个img,我想在“ChartContainer3”中创建,但我不明白当我单击submit时没有发生任何事情,没有创建。那么我如何在“ChartContainer3”中进行创建呢?