调用方法时找不到符号

时间:2015-11-22 21:11:30

标签: java methods

我有两个单独的java文件,但都在同一个文件夹中,因此调用方法应该很容易。问题出在这里;

    paDelimo = nota.vrniOktavo() + nota.vrniIndeks() + this.razmak * indeks;

这里说无法找到符号。它告诉我 nota.vrniOktavo()调用出了什么问题。它的作用是,它在另一个Java文件中调用一个方法。我不知道为什么它不起作用?

呼叫应该是什么样的?它正在调用下面包含在此代码中的方法。在此代码下方,您还可以找到有问题的行所属的文件的完整代码。

  public class Nota{
private int oktava;
private int indeks;



public Nota(int oktava, int indeks){
    this.oktava = oktava;
    this.indeks = indeks;
}

public int vrniOktavo(){
    return this.oktava;
}

public int vrniIndeks(){
    return this.indeks;
}
}

以下是代码的其余部分,来自不起作用的部分;

public class Lestvica{

private int razmak;
private Nota zacetnaNota;


public Lestvica(Nota zacetnaNota, int razmak){
    this.zacetnaNota = zacetnaNota;
    this.razmak = razmak;
}
 public Nota clen(int indeks){
    int paDelimo = 0;
    int dobljenaOktava = 0;
    int dobljeniIndeks = 0;

    paDelimo = nota.vrniOktavo() + nota.vrniIndeks() + this.razmak * indeks;

    dobljenaOktava = paDelimo / 12;
    dobljeniIndeks = paDelimo % 12;
    Nota drugaNota = new Nota(dobljenaOktava, dobljeniIndeks);
    return drugaNota;
}

4 个答案:

答案 0 :(得分:3)

nota是不分割的。您有一个名为Nota的{​​{1}}实例,因此您应该写:

zacetnaNota

答案 1 :(得分:2)

您的问题是未声明的变量。

方法

public Nota clen(int indeks){
    int paDelimo = 0;
    int dobljenaOktava = 0;
    int dobljeniIndeks = 0;

    paDelimo = nota.vrniOktavo() + nota.vrniIndeks() + this.razmak * indeks;

    // code continues
}

您正在尝试为名为paDelimo的对象分配变量nota,该值在方法范围内未创建或可用。此类中唯一可用的类Nota实例为zacetnaNota。但是你试图从nota读取。

因此,如果您混淆了变量的名称,请将该行重写为

paDelimo = zacetnaNota.vrniOktavo() + zacetnaNota.vrniIndeks() + this.razmak * indeks;

或者创建Nota类的另一个实例,名为nota,以解决缺少的引用。

答案 2 :(得分:2)

或者您可以为zacetnaNota实施getter:

private Nota zacetnaNota;

public Nota getZacetnaNota() {
    return zacetnaNota;
}

然后:

 paDelimo = getZacetnaNota().vrniOktavo() + getZacetnaNota().vrniIndeks() + this.razmak * indeks;

答案 3 :(得分:1)

你想在Lestvica课堂上打电话给zacetnaNota而不是nota。

这是固定代码:

public class Lestvica {

private int razmak;
private Nota zacetnaNota;

public Lestvica(Nota zacetnaNota, int razmak) {
    this.zacetnaNota = zacetnaNota;
    this.razmak = razmak;
}

public Nota clen(int indeks) {
    int paDelimo = 0;
    int dobljenaOktava = 0;
    int dobljeniIndeks = 0;

    paDelimo = zacetnaNota.vrniOktavo() + zacetnaNota.vrniIndeks() + this.razmak * indeks;

    dobljenaOktava = paDelimo / 12;
    dobljeniIndeks = paDelimo % 12;
    Nota drugaNota = new Nota(dobljenaOktava, dobljeniIndeks);
    return drugaNota;
}