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

Asked

Viewed 996 times

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

1 answer

1

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

Also, I see that you will implement various replacement algorithms, so defining an interface will be very useful to you.

Do it:

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.
    }
}

Ah, I strongly oppose the use of switches and do not recommend the use of them virtually ever. I could propose you an alternative to eliminate it that was not just a lot of ifs (in case it would be with a Map). However, as your question is on a very beginner level, let’s stick around.

  • Algorithms replace algorithm; Why did Voce write isto_??? not understand T.T

  • @Ryu1031 I am declaring a variable and within the switch a value is assigned to it. This variable represents the algorithm chosen by the user.

  • but here is giving error in putting this :(

  • @Ryu1031 What error?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.