Почему у меня возникают проблемы при вызове этого метода из другого класса? - PullRequest
1 голос
/ 13 января 2012

Я ученик восьмого класса с жестким сроком на Java-проекте. У меня все готово для работы с моим графическим интерфейсом, за исключением того, что мне нужно взять два значения из двух текстовых полей и отправить их методу другого класса, когда я нажимаю кнопку. У меня проблемы с вызовом нужного мне метода. Весь важный код ниже.

Код, который пытается вызвать метод:

 private void GoButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         

    String Ntextfield = NumberTextField.getText();
    n = Integer.parseInt(Ntextfield);

    String Rtextfield = RateTextField.getText();
    r = Integer.parseInt(Rtextfield);
    //call PermMath class
    PermMath doTheMath = new PermMath();
    doTheMath.permutations(int n, int r);
}  

Метод, который я пытаюсь вызвать:

class PermMath {
  static long factorial(int num){
      //other code is here
  }
  static long permutations(int n, int r){
        //code I want to call is here
  }
}

Ответы [ 4 ]

5 голосов
/ 13 января 2012

Подсказка для вас - ключевое слово static.Узнайте, что это значит и как это работает.

Кроме того, вы используете переменные n и r даже до того, как их объявите.сделал что-то вроде int n = 0;.

И, вызывая метод, вы не объявляете параметры.Ниже это неправильно.

doTheMath.permutations(int n, int r);

Вместо этого вы делаете что-то вроде

doTheMath.permutations(n, r);
1 голос
/ 13 января 2012

Обратите внимание, что если PermMath находится в другом пакете, чем класс, который определяет GoButtonActionPerformed(...), он не будет виден из-за отсутствия модификатора доступа public в методах и даже в классе.

Кстати, в Java имена методов должны начинаться со строчной буквы. В то время как ваш стиль является допустимым кодом, соблюдение соглашения упрощает чтение кода другим разработчикам Java.

Другое дело: вы не используете возвращаемое значение permutations(...). Это не может быть намерено.

1 голос
/ 13 января 2012

Мне кажется, у вас есть две ошибки:

  1. Вы передаете два временных целых числа с именами n и r вместо того, чтобы передавать два целых числа, которые вы изменили ранее в вашей функции GoButtonActionPerformed.
  2. Функция permutations является статической, поэтому нет необходимости фактически создавать экземпляр класса PermMath.

Изменение вызова функции на это должно сделать это:

PermMath.permutations(n, r);
0 голосов
/ 13 января 2012

Вы объявили static методы в вашем PermMath классе - для них не требуется вызывать экземпляр класса. Вы просто называете их с:

PermMath.permutations(n,r);

Проверьте трек для этого на: http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...