2013-03-21 79 views
0

所以Ive得到调用不工作

public static void main(String[] args) { 

    System.out.println("Trying to open lock"); 
    System.out.println("Trying "); 
    ComboLock numbers = new ComboLock(); 
    int number1 = numbers.ComboLock; 
    ` 

和IM试图调用ComboLock从这个类

public class ComboLock { 

private int number1, number2, number3; 
private boolean locked; 
public static final int SMALLEST_NUMBER = 1; 
public static final int LARGEST_NUMBER = 39; 

public ComboLock() { 
    locked = true; 
    Random rand = new Random(); 
    number1 = rand.nextInt(LARGEST_NUMBER - SMALLEST_NUMBER) + SMALLEST_NUMBER; 
    number2 = rand.nextInt(LARGEST_NUMBER - SMALLEST_NUMBER) + SMALLEST_NUMBER; 
    number3 = rand.nextInt(LARGEST_NUMBER - SMALLEST_NUMBER) + SMALLEST_NUMBER; 
} 

的方法和即时得到哪里我尝试让number1.ComboLock错误正确() ;说,它不能找到符号

回答

3
public ComboLock() { 

是一个构造函数和您试图访问其作为函数/法

int number1 = numbers.ComboLock; 
0

当你调用ComboLock numbers = new ComboLock();,它实际上调用ComboLock()函数你创建。它被称为构造函数,它仅适用于与该类具有相同名称的函数。

0
public ComboLock() { 

是构造函数并且是静态的,您不能使用对象调用它。

0

您试图调用构造函数,而不是方法。作为一个构造函数,它不会返回值,所以在某处指定它的返回值没有意义。

public class ComboLock { 

    private int number1, number2, number3; 
    private boolean locked; 
    public static final int SMALLEST_NUMBER = 1; 
    public static final int LARGEST_NUMBER = 39; 

    public ComboLock() { 
     locked = true; 
     Random rand = new Random(); 
     number1 = rand.nextInt(LARGEST_NUMBER - SMALLEST_NUMBER) + SMALLEST_NUMBER; 
     number2 = rand.nextInt(LARGEST_NUMBER - SMALLEST_NUMBER) + SMALLEST_NUMBER; 
     number3 = rand.nextInt(LARGEST_NUMBER - SMALLEST_NUMBER) + SMALLEST_NUMBER; 
    } 
    public int getNumber1() { 
     return number1; 
    } 
} 

这样称呼它:

ComboLock numbers = new ComboLock(); 
int number1 = numbers.getNumber1(); 
0

我想你的意思是这样:

int number1 = numbers.number1; 

...这无论如何是行不通的,因为number1领域是私人的。