【问题标题】:I having difficulty making an instance object for a class I just made using Java我很难为我刚刚使用 Java 创建的类创建实例对象
【发布时间】:2014-07-13 23:33:28
【问题描述】:

这是我尝试创建的类:

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

我相信我已经正确地完成了课程。我只是想创建和使用一个可以计算矩形面积的类。
然后我尝试实际创建实例对象:

/*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();  
    }   
}

当我尝试创建对象 rec 作为我刚刚创建的 Rectangle 类的实例时,我不断收到错误消息。就好像程序根本找不到我刚刚制作的课程一样。任何反馈都会有所帮助。谢谢

【问题讨论】:

  • 请在您的 IDE 中发布您的包视图的屏幕截图,然后我们可能会为您提供进一步的帮助。

标签: java class object netbeans instance


【解决方案1】:

你的两个类都在两个不同的包中。所以当你想在你的RectangleClassTest 中使用Rectangle 类时,你需要导入它。

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

import rectangle.Rectangle;

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

rectangle.Rectangle rec=new rectangle.Rectangle();

下面一行还有编译器错误

rec.setLength()=keyboard.nextInt();

应该像下面这样

rec.setLength(keyboard.nextInt());

更新: 除了在您的 Rectangle 类中,您的 setter 方法应该执行 this.length = length 而不是相反。下面是正确的方法

public void setLength(double length){
    this.length=length;
}
public void setWidth(double width){
    this.width=width;
} 

【讨论】:

    【解决方案2】:

    发生的情况是类位于不同的包中。要在包rectangleclasstest 中使用类Rectangle,您必须导入它:

    package rectangleclasstest;
    
    import java.util.Scanner;
    import rectangle.Rectangle;
    
    public class RectangleClassTest 
    { ... }
    

    另外,当你这样做时:

    length=this.length;
    

    您只是在修改参数length。我猜你想修改实例属性:

    this.length = length;
    

    【讨论】:

      【解决方案3】:

      需要导入rectangle包或者显式命名为Rectangle,

      rectangle.Rectangle rec=new rectangle.Rectangle();
      

      另外,这里有一个编译器错误,

      rec.setLength()=keyboard.nextInt();
      

      应该是

      rec.setLength(keyboard.nextInt());
      

      【讨论】:

        【解决方案4】:

        因为您使用不同的包。您可以在矩形包中创建 RectangleClassTest 或导入 Rectangle 包

        【讨论】:

          【解决方案5】:

          为了确保覆盖所有角度,我们还可以查看您的导入以确保正确导入 Rectangle 类。
          问题似乎也出在这句话上:
          rec.setLength()=keyboard.nextInt();
          这不应该是:
          rec.setLength(keyboard.nextInt());
          这对我来说似乎更有意义。如果这个答案有帮助,别忘了给它投票或接受它作为答案

          【讨论】:

            猜你喜欢
            • 2014-02-21
            • 2016-11-28
            • 2017-12-03
            • 2020-04-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多