Member 13360418 Ответов: 1

Я попробовал реализовать интерфейсы. Но поиск имени интерфейса дал null. Пожалуйста помочь.


import java.util.*;
public class TestClass {
  public static String interfaceName;
	 public static void main(String[] args) { 
		
        MyCalculator my_calculator=new MyCalculator();
        Scanner nw=new Scanner(System.in);
        int no=nw.nextInt();

        System.out.println("I implemented "+interfaceName);
        System.out.print(my_calculator.divisor_sum(no));

    }

    static void ImplementedInterfaceNames(Object o){
        Class[] theInterfaces = o.getClass().getInterfaces();
        for (int i = 0; i < theInterfaces.length; i++){
            interfaceName = theInterfaces[i].getName();}
    }
}

interface AdvancedArithmatic{
    int divisor_sum(int n);
}

class MyCalculator implements AdvancedArithmatic{

    @Override
    public int divisor_sum(int n) {
        int mySum=0;
        for(int i=1;i<=n;i++){
            if(n%i==0) mySum+=i;
        }
        return mySum;
    }
}


Что я уже пробовал:

import java.util.*;
public class TestClass {
  public static String interfaceName;
	 public static void main(String[] args) { 
		
        MyCalculator my_calculator=new MyCalculator();
        Scanner nw=new Scanner(System.in);
        int no=nw.nextInt();

        System.out.println("I implemented "+interfaceName);
        System.out.print(my_calculator.divisor_sum(no));

    }

    static void ImplementedInterfaceNames(Object o){
        Class[] theInterfaces = o.getClass().getInterfaces();
        for (int i = 0; i < theInterfaces.length; i++){
            interfaceName = theInterfaces[i].getName();}
    }
}

interface AdvancedArithmatic{
    int divisor_sum(int n);
}

class MyCalculator implements AdvancedArithmatic{

    @Override
    public int divisor_sum(int n) {
        int mySum=0;
        for(int i=1;i<=n;i++){
            if(n%i==0) mySum+=i;
        }
        return mySum;
    }
}

1 Ответов

Рейтинг:
6

Thomas Daniels

Это показывает null потому что interfaceName никогда не получает значения: он получит значение ImplementedInterfaceNames его бы позвали, но его никогда не вызывают.

Кроме того, вместо того, чтобы использовать статическую переменную для метода, чтобы дать его выходные значения, лучше использовать return оператор в вашем методе: Возврат значения из метода (учебные пособия Java™ > изучение языка Java > классы и объекты)[^]