Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';这个定义不正确吗?_Java - Fatal编程技术网

Java 为什么赢了';这个定义不正确吗?

Java 为什么赢了';这个定义不正确吗?,java,Java,我试图编译这个定义,但我一直得到一个错误。错误显示: 发现1个错误: 文件:C:\Users\GreatOne\Desktop\Master Folder\04(j)\04-Copy\ObjectDemo2\CreateObjectDemo.java[行:32] 错误:无法将原点解析为变量 /** * This class offers a main method to create and use sample Point and Rectangle objects. */ public

我试图编译这个定义,但我一直得到一个错误。错误显示: 发现1个错误: 文件:C:\Users\GreatOne\Desktop\Master Folder\04(j)\04-Copy\ObjectDemo2\CreateObjectDemo.java[行:32] 错误:无法将原点解析为变量

/**
 * This class offers a main method to create and use sample Point and Rectangle objects.
 */
public class CreateObjectDemo {
    public static void main(String[] args) {

        // Create a point object and two rectangle objects:
        Point origin_one = new Point(23, 94);
        Rectangle rect_one = new Rectangle(origin_one, 100, 200);
        Rectangle rect_two = new Rectangle(50, 100);

        // Display rect_one's width, height, and area:
        System.out.printf("Width of rect_one: " , rect_one.width);
        System.out.printf("Height of rect_one: " , rect_one.height);
        System.out.printf("Area of rect_one: " , rect_one.area());

        // Set rect_two's position:
        rect_two.origin = origin_one;

        // Display rect_two's position:
        System.out.printf("X Position of rect_two: " , rect_two.origin.x);
        System.out.printf("Y Position of rect_two: " , rect_two.origin.y);

        // Move rect_two and display its new position:
        rect_two.move(40, 72);
        System.out.printf("X Position of rect_two: " , rect_two.origin.x);
        System.out.printf("Y Position of rect_two: " , rect_two.origin.y);
        }

        // A method for moving the rectangle:
        public void move(Point newOrigin) {
           origin = newOrigin;
        }
}

/* 

move
方法或
CreateObjectDemo
类中,没有任何称为
origin
的局部变量或属性

如果您需要在类的开头声明一个名为
origin
的属性:

private Point origin;

标准Java
Rectangle
类无法使用以下简单赋值设置原点:

origin = newOrigin;
除此之外,自Java1.1以来,
move
方法一直被弃用

相反,您将需要以下内容:

rect_two.setLocation (origin_one);

有关更多详细信息,请参阅。

在您的类中,没有任何名为
origin
的变量或参数。编译器会发出这些称为错误消息的重要信息。是的,它们有时很难阅读,但你应该培养阅读它们的技巧

[edwbuck@localhost ~]$ javac CreateObjectDemo.java 
CreateObjectDemo.java:28: error: cannot find symbol
        public void move(Point newOrigin) {
                         ^
  symbol:   class Point
  location: class CreateObjectDemo
CreateObjectDemo.java:5: error: cannot find symbol
        Point origin_one = new Point(23, 94);
        ^
  symbol:   class Point
  location: class CreateObjectDemo
CreateObjectDemo.java:5: error: cannot find symbol
        Point origin_one = new Point(23, 94);
                               ^
  symbol:   class Point
  location: class CreateObjectDemo
CreateObjectDemo.java:6: error: cannot find symbol
        Rectangle rect_one = new Rectangle(origin_one, 100, 200);
        ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:6: error: cannot find symbol
        Rectangle rect_one = new Rectangle(origin_one, 100, 200);
                                 ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:7: error: cannot find symbol
        Rectangle rect_two = new Rectangle(50, 100);
        ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:7: error: cannot find symbol
        Rectangle rect_two = new Rectangle(50, 100);
                                 ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:29: error: cannot find symbol
           origin = newOrigin;
           ^
  symbol:   variable origin
  location: class CreateObjectDemo
8 errors
在上述课程中你有8个错误。这就是它无法编译的原因

错误号1:

CreateObjectDemo.java:28: error: cannot find symbol
        public void move(Point newOrigin) {
                         ^
  symbol:   class Point
  location: class CreateObjectDemo
在第28行,您使用了名为
Point
的类、接口或枚举,但没有告诉编译器您正在使用的
Point
。换句话说,您缺少特定
点的import语句,或者没有在
CreateObjectDemo.java
文件中定义它

错误2和3:

  symbol:   class Point
  location: class CreateObjectDemo
CreateObjectDemo.java:5: error: cannot find symbol
        Point origin_one = new Point(23, 94);
        ^
  symbol:   class Point
  location: class CreateObjectDemo
CreateObjectDemo.java:5: error: cannot find symbol
        Point origin_one = new Point(23, 94);
                               ^
  symbol:   class Point
  location: class CreateObjectDemo
同样,您正在使用这个
东西。使用导入让编译器知道在哪里可以找到它

错误4、5、6和7

  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:6: error: cannot find symbol
        Rectangle rect_one = new Rectangle(origin_one, 100, 200);
                                 ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:7: error: cannot find symbol
        Rectangle rect_two = new Rectangle(50, 100);
        ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:7: error: cannot find symbol
        Rectangle rect_two = new Rectangle(50, 100);
                                 ^
  symbol:   class Rectangle
  location: class CreateObjectDemo
CreateObjectDemo.java:29: error: cannot find symbol
的问题相同,但现在您正在使用一个名为
矩形
的未定义类或接口。使用import语句明确编译器应该在何处查找此
矩形

错误8:

CreateObjectDemo.java:29: error: cannot find symbol
           origin = newOrigin;
           ^
  symbol:   variable origin
  location: class CreateObjectDemo

现在您正在使用一个名为
origin
的变量,但您从未告诉编译器您将使用
origin
(或它的类型)。添加
点原点origin
OK之前的某个地方进行code>声明,因此这里的问题是
origin
main
中声明为局部变量,而它需要成为
CreateObjectDemo
类中的字段

但真正的问题是你把代码的缩进搞砸了。这使得发现
origin
声明在错误的范围内变得更加困难

第1课:花时间正确缩进代码是值得的。从长远来看,您可以节省时间,并且在代码评审中也可以减少擦伤


第二课:阅读编译器消息的实际内容是值得的。。。试着理解它在说什么。在这种情况下,信息会非常清楚地告诉您问题所在。不幸的是,它不能确切地告诉你你做错了什么。(编译器不擅长计算出您要编写的内容。他们只是遵循规则,说明什么是有效的…并告诉您程序是否无效。)

um,因为范围中没有称为origin的变量?这是我使用Java的第一天。有人能解释一下我是如何做到这一点的吗。
origin
你从来没有定义过这一点,在课堂范围内,你认为从
move
方法看,
origin
是在哪里定义的?@user2510694如果这是你的第一天,我推荐一本好的入门教程或一本书。。。。。在这种情况下,半吊子和摇摆更可能伤害你……我以为这是一个放错位置的支架,但我不确定在哪里。看起来不像。虽然
}
方法上方的
移动
应该在左侧,但这只是一个小的缩进问题。+1。考虑到这个问题的“先问,永久停止思考”的性质,我不确定我是否会深入到这样的细节(即使是付费服务的一部分)。@TheBlastOne好吧,我倾向于同意不要过度填鸭式的观点,但很难真正知道互联网的另一端发生了什么。有时确实需要向人们展示如何读取编译器输出,因为并不清楚这些神秘的消息对每个人意味着什么(并且不是每个人都有学习如何编程的良好早期指南)。也许这是试图“教他们如何捕鱼”,而不是“今天喂他们一条鱼”;但是,如果没有鱼的剩余,就很难“教钓鱼”。我是一个人学的,所以除了这里我没有其他的帮助。所以我花了一点时间才明白你们想解释什么。请注意,你有一个非常强大的朋友:谷歌。以及存在的问题。到处都是教程。大量的文档。不客气,但是写一个有用的答案比自己先在网上做一些研究要花更多的时间。只是mho。问题是,我承认这一点。像你这样的新用户应该得到代表性的提升,而不是动力的下降,所以…@user2510694好吧,那么欢迎使用一种优秀的语言。您可能想阅读Oracle提供的非常好的教程。从“入门”开始,然后快速转到“学习java语言”,它将为您提供一个非常好的语言介绍,特别是如果您没有从其他地方获得什么帮助的话。您是否碰巧看到我在哪里弄乱了缩进?是的。
move
方法缩进太深一级。