2016-11-28 92 views
-5

我试着运行代码,并收到错误“点无法解析为变量”。为什么我得到这个错误,请尝试自己运行代码,并分享你得到的输出是什么。谢谢。这段代码在Java中的输出是什么?

public class ReferenceMystery1 { 
    public static void main(String[] args) { 
     int a = 7; 
     int b = 9; 
     Point p1 = new Point(2,2); 
     Point p2 = new Point(2,2); 
     addToXTwice(a, p1); 
     System.out.println(a + " " + b + " " + p1.x + " " + p2.x); 
     addToXTwice(b, p2); 
     System.out.println(a + " " + b + " " + p1.x + " " + p2.x); 

    } 

    public static void addToXTwice(int a, Point b) { 
     a = a + a; 
     p1.x = a; 
     System.out.println(a + " " + p1.x); 
    } 
} 
+3

使用'bx'而不是'p1.x',因为在这个函数范围内没有'p1' addToXTwice(int a,Point b)' –

+1

我们也会得到同样的错误,你在哪里导入'Point' ? –

+0

分享整个堆栈跟踪。也分享Point Class的全部细节。这是你写的一堂课吗?或者它是java.awt.Point还是它org.openqa.selenium.Point? – Bopsi

回答

1

进口点类

import java.awt.Point; 

更换

p1.x = a; 
System.out.println(a + " " + p1.x); 

b.x = a; 
System.out.println(a + " " + b.x); 

完整的工作代码

import java.awt.Point; 
public class HelloWorld{ 

public static void main(String[] args) { 
    int a = 7; 
    int b = 9; 
    Point p1 = new Point(2,2); 
    Point p2 = new Point(2,2); 
    addToXTwice(a, p1); 
    System.out.println(a + " " + b + " " + p1.x + " " + p2.x); 
    addToXTwice(b, p2); 
    System.out.println(a + " " + b + " " + p1.x + " " + p2.x); 
} 

public static void addToXTwice(int a, Point b) { 
    a = a + a; 
    b.x = a; 
    System.out.println(a + " " + b.x); 
    } 
} 
+0

是的,这也是问题之一,但它不会完全解决OP的问题,因为OP没有导入所需的类。 –

+0

好的我编辑了我的答案 –

0

“Point”类不适用于我运行程序。

假设它是可用的,并且您可以编译,那么,如前面的响应所示......您无法在addToXTwice()方法中访问p1.x,因为输入参数是'a'和'b'。

与“进口java.awt.Point中”,我得到以下编译错误

javac -g ReferenceMystery1.java ReferenceMystery1.java:18: error: cannot find symbol p1.x = a; ^ symbol: variable p1 location: class ReferenceMystery1 ReferenceMystery1.java:19: error: cannot find symbol System.out.println(a + " " + p1.x); ^ symbol: variable p1 location: class ReferenceMystery1 2 errors

这些都是对准从内部addToXTwice()方法中的“P1”不可用以前的评论。

+0

'addToXTwice(int a,Point b)'而不是p1有b作为参数传递,所以你应该在addToXTwice()方法里改变p1 –