我很难为使用Java制作的类创建实例对象

Che*_*vyb 0 java netbeans class object instance

这是我尝试创建的类:

package rectangle;

public class Rectangle
{
    private double length,width;

    public void setLength(double length)
    {
        length=this.length;
    }
    public void setWidth(double width)
    {
        width=this.width;
    } 
    public double getLength()
    {
        return length;
    }
    public double getWidth()
    {
        return width;
    }
    public double area()
    {
        return length*width;
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信我已经正确地上课了.我只是想创建并使用一个可以计算矩形区域的类.
然后我尝试实际创建实例对象:

/*Testing out the rectangle class*/
package rectangleclasstest;

import java.util.Scanner;

public class RectangleClassTest 
{

    static void main(String[] args) 
    {
        Scanner keyboard= new Scanner(System.in);
        Rectangle rec=new Rectangle();

        //get length
        System.out.println("Please enter the length");
        rec.setLength()=keyboard.nextInt();  
    }   
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将对象rec创建为我刚刚创建的Rectangle类的实例时,我一直收到错误.这几乎就好像程序找不到我刚刚制作的课程一样.任何反馈都会有帮助.谢谢

Set*_*etu 5

您的两个课程分为两个不同的课程.因此,当您想要Rectangle在您使用类时,您RectangleClassTest需要导入它.

您只需要在RectangleClassTest类的顶部添加导入行,如下所示

import rectangle.Rectangle;
Run Code Online (Sandbox Code Playgroud)

或者作为替代方法,您也可以通过明确声明包来调用类名,如下所示

rectangle.Rectangle rec=new rectangle.Rectangle();
Run Code Online (Sandbox Code Playgroud)

您下面还有一个编译器错误

rec.setLength()=keyboard.nextInt();
Run Code Online (Sandbox Code Playgroud)

应该如下所示

rec.setLength(keyboard.nextInt());
Run Code Online (Sandbox Code Playgroud)

更新:除了你Rectangle班级的那个,你的setter方法应该做,this.length = length而不是相反.以下是正确的方法

public void setLength(double length){
    this.length=length;
}
public void setWidth(double width){
    this.width=width;
} 
Run Code Online (Sandbox Code Playgroud)