Preciso criar uma classe chamada Contagem que contenha quatro métodos com o nome “contar” utilizando o conceito da sobrecarga. A assinatura e função de cada método aparecem descritas na tabela conforme
em anexo. Faça também outra classe para testar o método.Sensacional, é só você criar sua classe e copiar e colar os nomes de métodos que tem na tabela.
amigo, bom dia poderia me mostrar pois não entendi poderia me trazer o trecho do código com o primeiro método contar () ?
Boas, o que tem de fazer é quatro métodos void, com os parâmetros indicados na descrição do problema, ou seja.
public void contar(){
    Ciclo aqui dentro e imprime o resultado.
}
public void contar(int fim){
     Ciclo aqui dentro e imprimi o resultado.
     Ter atenção que tem de usar a variável 
     do parâmetro.
}
E assim vai…
seria mais ou menos assim ?
public class Contagem {
public static void public static void main(String[] args) {
    
}
public void contar(){
     //Apresenta em tela a contagem dos números de 1 a 10.
}
public void contar(int fim){
    //Apresenta em tela a contagem dos números de 1 até o valor 
    //definido pela variável fim.
}
public void  contar(int inicio, int fim){
    //Apresenta em tela a contagem dos números com valor inicial
    //definido pela variável inicio até o valor definido pela
    //variável fim.
}
public void contar(int inicio, int fim, int pausa){
    //Apresenta em tela a contagem dos números com valor inicial
    //definido pela variável inicio até o valor definido pela
    //variável fim. O parâmetro pausa define a pausa (em segundos)
//que deve ser data a cada valor impresso em tela.
}
}
Isso mesmo, só que esse método main você apaga e escreve na outra classe onde você vai testar a classe Contagem.
Inclusive, como você tem várias sobrecargas, você pode fazer com que um método de menos parâmetros delegue a chamada para um método com mais parâmetros, no final você só vai precisar implementar a lógica do método que possui mais parâmetros.
Veja:
public class Contagem {
    /**
     * Apresenta em tela a contagem dos números de 1 a 10.
     */
    public void contar() {
        contar(10); // reaproveitando o método 'contar(int fim)'
    }
    /**
     * Apresenta em tela a contagem dos números de 1 até o valor 
     * definido pela variável fim.
     */
    public void contar(int fim) {
        contar(1, fim); // reaproveitando o método 'contar(int inicio, int fim)'
    }
    /**
     * Apresenta em tela a contagem dos números com valor inicial
     * definido pela variável inicio até o valor definido pela
     * variável fim.
     */
    public void  contar(int inicio, int fim) {
        contar(inicio, fim, 0); // reaproveitando o método 'contar(int inicio, int fim, int pausa)'
    }
    /**
     * Apresenta em tela a contagem dos números com valor inicial
     * definido pela variável inicio até o valor definido pela
     * variável fim. O parâmetro pausa define a pausa (em segundos)
     * que deve ser data a cada valor impresso em tela.
     */
    public void contar(int inicio, int fim, int pausa) {
        // aqui você implementa a lógica
    }
}Jovem, buguei aqui  não to conseguindo nem implementar a lógica agora hahahaha travei.
 não to conseguindo nem implementar a lógica agora hahahaha travei.
Ué, você vai fazer um laço que vai de inicio até fim, imprimindo o valor do contador e fazendo uma pausa com os segundos informados.
então eu fiz aqui agora, porém não sei onde estou errando agora não executa.
public class Contagem {
    public static void contar(){
        for(int i = 1; i <= 10; i++){
            System.out.println(i);
        }
    }
    public static void contar(int fim){
        for(int i = 1; i <= fim; i++){
            System.out.println(i);
        }
    }
    public static void contar(int inicio, int fim){
        for(int i = inicio; i <= fim; i++){
            System.out.println(i);
        }
    }
    public static void contar(int inicio, int fim, int pausa){
        for(int i = inicio; i <= fim; i++){
            System.out.print(i + " ");
            try{
                Thread.sleep(pausa*1000);
            } catch (InterruptedException ex){
                Thread.currentThread().interrupt();
            }
        }
}
}
Cadê a classe de teste com o método main?
Esse catch está errado, se aconteceu uma InterruptedException porque é que você vai tentar interromper a Thread novamente?
Põe só um ex.printStackTrace() que está ótimo.
Porque você repetiu o for em cada método?
Não viu o exemplo que postei?
O [staroski] está a indicar algo desta forma, implementa e vai chamando o método seguinte.
public class Calcular {
    public void contar() {
        int contar = 0;
        System.out.println("Valores do primeiro método");
        while (contar < 10) {
            contar++;
                System.out.println(contar);
        }
        contar(10);
    }
    public void contar(int fim) {
        int contador = 0;
        System.out.println("Valores do segundo método");
        while (contador < fim) {
            contador++;
            System.out.println(contador);
        }
    }
    public static void main(String[] args) {
        Calcular calculo = new Calcular();
        calculo.contar();
        
    }
}
PS… Coloquei o metodo main na mesma classe, mas pode separar a classe calcular
Rapazeada, agradeço ae pela força mas acho que java não é minha área não eu nao consigo fazer funcionar, acho q vocês tem que desenhar ou resolver o problema por inteiro. E postar o código para eu ler e intender.
Boas amigo, neste exemplo coloquei todos os métodos independentes, cada um com a sua logico, penso que é melhor para entender.
public class Contagem {
    public void contar() {
        //  variavel contar recebe o valor de 0 //
        int contar = 0;
        System.out.println("Valores do primeiro método");
        // enquanto que a variavel conta seja menor que 10 executa o que está dentro do while
        while (contar < 10) {
            // uma vez que a variavel contar tem o valor de 0, qd chega a este ponto incremente um a cada vez que passa no while
            contar++;
            //imprime 
            System.out.println(contar);
        }
    }
    public void contar(int fim) {
        int contador = 0;
        System.out.println("Valores do segundo método");
        while (contador < fim) {
            contador++;
            System.out.println(contador);
        }
    }
    public void contar(int inicio, int fim) {
        System.out.println("Valores do terceiro método");
        while (inicio <= fim) {
            System.out.println(inicio);
            inicio++;
        }
    }
    public void contar(int inicio, int fim, int pausa) throws InterruptedException {
        //throws quem chamar o método tem opção de tratar a exeção  //
        System.out.println("Valores do quarto método");
        // converte milisegundos para segundos //
        int segundos = pausa * 1000;
        while (inicio <= fim) {
            // classe Java que é utilizada para criar e executar tarefas simultaneamente //
            //sleep() para pausar a execução atual por um tempo. //
            Thread.sleep(segundos);
            System.out.println(inicio);
            inicio++;
        }
    }
}
//classe para testar os métodos //
public class testar{
    public static void main(String[] args) {
        Contagem calculo = new Contagem();
        
        //chama primeiro método //
        calculo.contar();
        
        //chama segundo metodo //
        calculo.contar(10);
        
        //chama terceiro método
        calculo.contar(1, 15);
        
        //chama quarto método //
        try {
            calculo.contar(1, 10, 2);
        } catch (InterruptedException ex) {
             //ex é a variavel que vai guardar as exeções do tipo InterruptedException //
            System.out.println(ex.getMessage());
               //ou//
            ex.printStackTrace();
        }
    }
}vlw irmão muito obrigado.
A ideia da sobrecarga é ter vários métodos com o mesmo nome, porém com assinaturas diferentes (ou seja, com parâmetros diferentes, sejam com tipos diferentes ou até com quantidade diferente). Assim você pode reaproveitar a lógica de um nos outros.
Repare que no seu caso, os métodos têm várias coisas em comum: eles imprimem todos os números de um valor inicial até um valor final, e pode ou não ter uma pausa entre eles. O algoritmo é o mesmo, só mudam os parâmetros.
O que você pode fazer é criar primeiro o método mais “genérico”, o que recebe todos os parâmetros:
public class Contagem {
    // recebe o valor inicial, final e o tempo de pausa
    public void contar(int inicio, int fim, int pausa) {
        long tempoPausa = pausa * 1000;
        for (int i = inicio; i <= fim; i++) {
            System.out.println(i);
            if (tempoPausa > 0) { // se não tem pausa, nem chama o sleep
                try {
                    Thread.sleep(tempoPausa);
                } catch (InterruptedException ex) {
                    // imprime alguma mensagem de erro, não faz nada?
                }
            }
        }
    }
}
Ou seja, imprime todos os números no intervalo indicado, e caso o tempo de pausa seja maior que zero, chama o sleep.
Depois, basta reusar o mesmo método para os demais casos. Por exemplo, se o método não recebe nenhhum parâmetro, ele mostra os números de 1 a 10, sem pausas. Ou seja:
public void contar() {
    // início=1, fim=10, pausa=0
    contar(1, 10, 0);
}
Isso é sobrecarga: temos dois métodos com o mesmo nome (contar), mas com assinaturas diferentes (um não têm parâmetros, outro tem 3). E um pode reaproveitar a lógica do outro, só mudando os valores dos parâmetros.
Com isso, fazer os demais fica fácil. Se ele só recebe o valor final, então o inicial é 1 (e também não tem pausa):
public void contar(int fim) {
    contar(1, fim, 0);
}
E se ele recebe o início e fim, executa sem pausas:
public void contar(int inicio, int fim) {
    contar(inicio, fim, 0);
}
Isso é basicamente o mesmo que já foi explicado acima, mas enfim… 
Repare que assim você não precisa repetir o mesmo loop em todos os métodos (como sugeriram acima, que também funciona, mas acaba duplicando código à toa).
Ou seja, a classe completa fica assim:
public class Contagem {
    public void contar() {
        contar(1, 10, 0);
    }
    public void contar(int fim) {
        contar(1, fim, 0);
    }
    public void contar(int inicio, int fim) {
        contar(inicio, fim, 0);
    }
    public void contar(int inicio, int fim, int pausa) {
        long tempoPausa = pausa * 1000;
        for (int i = inicio; i <= fim; i++) {
            System.out.println(i);
            if (tempoPausa > 0) { // se não tem pausa, nem chama o sleep
                try {
                    Thread.sleep(tempoPausa);
                } catch (InterruptedException ex) {
                    // imprime alguma mensagem de erro, não faz nada?
                }
            }
        }
    }
}
Testando:
public static void main(String[] args) throws Exception {
    Contagem c = new Contagem();
    // mostra os números de 1 a 10
    c.contar();
    // mostra os números de 1 a 5
    c.contar(5);
    // mostra os números de 15 a 20
    c.contar(15, 20);
    // mostra os números de 150 a 154, com pausa de 1 segundo
    c.contar(150, 154, 1);
}
Não é a cultura deste fórum dar as respostas prontas, porque a ideia é tirar dúvidas pontuais e ajudar no ensino. Mas ajudar no ensino não significa fazer o código, porque se você recebeu um problema com tal enunciado, significa que o professor já te passou conteúdo suficiente para resolver.
Então a cultura aqui é ajudar em questões específicas; não fazer o trabalho todo, porque isso não educa. Programação se aprende fazendo.
Mas já que o @bruno.batista fez isso, então depois pede o pix dele .  
 
