2015-07-01 3 views
-1

Мне нужна небольшая помощь в этой простой проблеме. Я получил ошибку компилятора, но Я не знаю, как удалить эту ошибку. Показаны ошибки в этой строке int n = totalTree(num);,
вот мой код:ошибка компиляции отсутствует

public class TotalNumberOfBinaryTrees { 

    //static int elementCount = 50; 

    public static void main(String[] args) { 
     Scanner sc=new Scanner(System.in); 
     int test =sc.nextInt(); 
     while(test>0){ 
      int num = sc.nextInt(); 
      int n = totalTree(num); 
      System.out.println("totalTree"+n); 
      test--; 
     } 
    } 

    public int totalTree(int n) { 
    if (n == 1 || n == 0) 
      return 1; 
    else { 
      int left = 0; 
      int right = 0; 
      int sum = 0; 
      for (int k = 1; k <= n; k++) { 
     left = totalTree(k - 1); 
     right = totalTree(n - k); 
     sum = sum + (left * right); 
      } 
    return sum; 
     } 
    } 
} 
+0

Пожалуйста добавляют фактический * сообщение об ошибке * на ваш вопрос – Dragondraikk

ответ

1

Вы не можете получить доступ нестатического метода из статического метода, так объявить метод как:

public static int totalTree(int n) {} 

Теперь следующий код не будет иметь компиляций вопросов:

public static void main(String[] args) { 
     Scanner sc=new Scanner(System.in); 
     int test =sc.nextInt(); 
     while(test>0){ 
      int num = sc.nextInt(); 
      int n = totalTree(num); 
      System.out.println("totalTree"+n); 
      test--; 
     } 
    } 

    public static int totalTree(int n) { 
     if (n == 1 || n == 0) 
      return 1; 
     else { 
      int left = 0; 
      int right = 0; 
      int sum = 0; 
      for (int k = 1; k <= n; k++) { 
       left = totalTree(k - 1); 
       right = totalTree(n - k); 
       sum = sum + (left * right); 
      } 
      return sum; 
     } 
    } 
1

totalTree не является статическим методом. Вы не можете вызвать его из статического метода (main), не создавая экземпляр своего класса.

Я не уверен, если это имеет смысл, но вы можете назвать его:

int n = new TotalNumberOfBinaryTrees().totalTree(num); 

или изменить его на статический метод.

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