Java 调用方法不起作用

Java 调用方法不起作用,java,methods,Java,Methods,所以我有 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; ` 我正试图从这个类中调用ComboLock public class C

所以我有

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;
    `
我正试图从这个类中调用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()时遇到了一个错误;说它找不到符号

public ComboLock() {
是一个构造函数,您正试图在中作为函数/方法访问它

int number1 = numbers.ComboLock;
是一个构造函数,您正试图在中作为函数/方法访问它

int number1 = numbers.ComboLock;

当您调用
ComboLock number=new ComboLock()时,它实际上调用您创建的ComboLock()函数。它被称为构造函数,并且只与与类同名的函数一起工作。

当您调用
ComboLock numbers=new ComboLock(),它实际上调用您创建的ComboLock()函数。它被称为构造函数,并且只与与类同名的函数一起工作

public 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;
    }
    public int getNumber1() {
        return number1;
    }
}
可以这样称呼:

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

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

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();

我想你是有意这么做的:

int number1 = numbers.number1;

。。。无论如何,这都不起作用,因为
number1
字段是私有的。

我想你是想这样做的:

int number1 = numbers.number1;
。。。因为
number1
字段是私有的,所以它无论如何都不起作用