How to call a method that is in another java file?

1

Here's the first class:

public class algoritmo {

    public static void main(String[] args){
        opcoes();
    }
public static void opcoes(){
        Scanner input = new Scanner(System.in);
        int num;

        System.out.println("Selecione o Algoritmo de Substituicao Desejado");
        System.out.println("1 - FIFO");
        System.out.println("2 - LRU");
        System.out.println("3 - Segunda Chance");
        System.out.println("4 - Otimo");

        num = input.nextInt();

        switch(num){
            case 1:
                FIFO();
            break;

            case 2:
                LRU();
            break;

            case 3:
                SegundaChance();
            break;

            case 4:
                Otimo();
            break;

        }

This is a method that is in the other file.

public class LRU {
    private int qtdePaginas;
    private int qtdeframes;
    int []paginas;
    int [][]matriz;
    int []falhas;
    int []distancia;

    public LRU(){
        System.out.println("LRU");
    }

    public void setPaginas(int []paginas){
        this.paginas = paginas;
    }

    public void setQtdePaginas(int qtdePaginas){
        this.qtdePaginas = qtdePaginas;
    }

    public void setQtdeframes(int atdeframes){
        this.qtdeframes = qtdeframes;
    }

    public void iniciarFalhas(){
        for(int i=0; i<qtdePaginas; i++){
            falhas[i] = 0;
        }
    }
    
asked by anonymous 16.10.2017 / 21:28

1 answer

1

You have to instantiate the LRU class to use its instance methods (which do not have static ).

In addition, I see that you will implement several replacement algorithms, so defining an interface will be very useful.

Do this:

public interface AlgoritmoDeSubstituicao {
    public void setPaginas(int[] paginas);
    public void setQuantidadeDePaginas(int quantidadeDePaginas);
    public void setQuantidadeDeFrames(int quantidadeDeFrames);
    public void iniciarFalhas();
}

Your class LRU revised:

public class LRU implements AlgoritmoDeSubstituicao {
    private int quantidadeDePaginas;
    private int quantidadeDeFrames;
    private int[] paginas;
    private int[][] matriz;
    private int[] falhas;
    private int[] distancia;

    public LRU() {
        System.out.println("LRU");
    }

    @Override
    public void setPaginas(int[] paginas) {
        this.paginas = paginas;
    }

    @Override    
    public void setQuantidadeDePaginas(int quantidadeDePaginas) {
        this.quantidadeDePaginas = quantidadeDePaginas;
    }

    @Override
    public void setQuantidadeDeFrames(int quantidadeDeFrames) {
        this.quantidadeDeFrames = quantidadeDeFrames;
    }

    @Override
    public void iniciarFalhas() {
        for (int i = 0; i < quantidadeDePaginas; i++) {
            falhas[i] = 0;
        }
    }
}

Your class Algoritmo :

public class Algoritmo {

    public static void main(String[] args) {
        opcoes();
    }

    public static void opcoes() {
        Scanner input = new Scanner(System.in);
        int num;

        System.out.println("Selecione o algoritmo de substituicao desejado.");
        System.out.println("1 - FIFO");
        System.out.println("2 - LRU");
        System.out.println("3 - Segunda Chance");
        System.out.println("4 - Otimo");

        num = input.nextInt();

        AlgoritmoDeSubstituicao algoritmo;

        switch (num) {
            case 1:
                algoritmo = new FIFO();
                break;

            case 2:
                algoritmo = new LRU();
                break;

            case 3:
                algoritmo = new SegundaChance();
                break;

            case 4:
                algoritmo = new Otimo();
                break;

            default:
                algoritmo = null;
        }

        if (algoritmo == null) {
            // Faça alguma coisa avisando que o usuário escolheu uma opção inválida.
        }

        // Use a variável algoritmo como quiser daqui para baixo.
    }
}

Oh, I'm strongly opposed to using switch es and I do not recommend using them pretty much ever. I could propose an alternative to eliminate it that was not just a bunch of if s (in this case, it would be with Map ). However, since your question is at a very early stage, we'll stick around.

    
16.10.2017 / 21:43