2016-11-28 95 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 –