2015-11-22 6 views
0

У меня есть два отдельных java-файла, но они оба в одной папке, поэтому методы вызова должны быть легкими. Проблема здесь;Не удается найти символ при вызове метода

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

Здесь он говорит, что не может найти символ. Это говорит мне, что что-то не так с nota.vrniOktavo() call Что он делает, есть, он вызывает метод в другом файле 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; 
} 

ответ

1

Вы хотите называть zacetnaNota, а не nota, в классе Lestvica.

Вот фиксированный код:

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; 
} 
+0

Awsome, я изменил nota на zacetnaNota, и он отлично работает! Спасибо за помощь. – Z3br3

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, чтобы разрешить отсутствующую ссылку.

+0

Спасибо за ваш Ответить. Я полагал, что это должно быть zacetnaNota вместо просто «нота». – Z3br3

+0

Z3br3 nota - незаменимая переменная, вы хотите изменить «нота» на «zacetnaNota». (Или, я предполагаю, что. Eclipse сказал мне, что это не используется). – Whirvis

+0

Пожалуйста, примите ответ, который вы нашли наиболее полезным. нажав галочку рядом с ответом. Приветствия! – SarathChandra

3

nota является undifined. У вас есть экземпляр Nota, который называется zacetnaNota, поэтому вы должны написать:

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

Спасибо, работаю хорошо сейчас :) – Z3br3

2

Или вы можете реализовать поглотитель для zacetnaNota:

private Nota zacetnaNota; 

public Nota getZacetnaNota() { 
    return zacetnaNota; 
} 

Тогда:

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

Спасибо за помощь! – Z3br3

Смежные вопросы