Carregando...

Valores de retorno em Java

Escreva um método chamado twice que recebe um int chamado n e devolve o dobro desse número. O cabeçalho começa com int, não void: static int twice(int n). Dentro das chaves escreva return n * 2;. Em main, imprima o resultado da chamada: System.out.println(twice(7));. A tela deve mostrar uma linha: 14. O próprio twice não chama println. Só devolve 14. main imprime esse número. Essa devolução é o que esta página ensina.

Devolva um número a main

Na página de parâmetros, greet e show imprimiam dentro do corpo do método. A chamada enviava um valor para dentro, e o método escrevia na tela. Aqui o método ainda recebe um valor, mas também envia um valor para fora. A palavra return marca esse valor de saída. main pode guardá-lo ou imprimi-lo.
Crie um arquivo pequeno de programa chamado Box.java. A public class da primeira linha deve coincidir com o nome do arquivo: public class Box. Não deixe um nome antigo de classe Tip ou Chime neste arquivo; o compilador espera que o nome da classe e o nome do arquivo concordem.
Fora de main, ainda dentro das chaves da classe, escreva:
static int twice(int n) {
return n * 2;
}
O cabeçalho já não diz void. Diz int porque o valor que volta é um int. Entre os parênteses, int n ainda é um parâmetro — a mesma ideia da página anterior. O corpo tem uma instrução: return n * 2;. Isso multiplica n por 2 e devolve o produto a quem chamou twice. Não há System.out.println dentro de twice nesta página. Salve o arquivo antes de compilar.

Box.java com twice

Este é o programa pequeno completo. twice calcula. main imprime.

twice devolve n vezes 2

java
public class Box {
    public static void main(String[] args) {
        System.out.println(twice(7));
    }

    static int twice(int n) {
        return n * 2;
    }
}

Na pasta que guarda Box.java, execute javac Box.java. Quando parênteses, chaves e pontos e vírgulas coincidem, o javac não escreve nenhuma linha própria. Depois execute java Box — não java Box.java. Tire o final .java do segundo comando. Os mesmos dois comandos funcionam no Windows e no macOS; esta página não precisa de outra ortografia de shell para nenhum dos sistemas. O programa deve imprimir uma linha e parar: 14. Não deve pedir que você digite. Se o terminal ficar esperando teclado, ainda há uma chamada nextLine de um exercício antigo no arquivo. Apague essa chamada e conserve System.out.println(twice(7)); mais o método twice acima. Uma linha errada na tela não significa que você precise reinstalar o JDK.

Percorra uma execução completa na ordem. Java começa em main. A chamada twice(7) envia 7 para n. Dentro de twice, return n * 2; calcula 14 e devolve esse 14 a main. Depois println escreve 14. twice nunca escreveu sozinho na tela. Se você mudar a chamada para twice(3), a tela deve mostrar 6. O corpo do método continua o mesmo; só o argumento muda, e o produto devolvido muda com ele. Se a tela mostrar 7 em vez de 14, você imprimiu n dentro de twice ou imprimiu o argumento em main sem chamar twice — coloque a duplicação na linha return e imprima o resultado da chamada.
Você também pode guardar o valor devolvido num nome dentro de main antes de imprimir:
int result = twice(7);
System.out.println(result);
Isso ainda mostra uma linha: 14. A chamada termina primeiro e preenche result. Depois println escreve result. As duas formas — imprimir a chamada direto, ou guardar e depois imprimir — usam o mesmo return de twice.

Imprima o valor que main recebeu

Mude só o número na chamada se quiser outra linha na tela. Deixe return n * 2; em paz. Compile e execute de novo depois de cada mudança: javac Box.java, depois java Box. twice(0) deve imprimir 0. twice(10) deve imprimir 20. Cada vez main imprime o que twice devolveu.
Se twice ainda diz void no cabeçalho mas o corpo tem return n * 2;, o javac escreve um erro — void significa que nada volta, então um return com valor não cabe. Se o cabeçalho diz int mas o corpo não tem return, o javac também escreve um erro — um método int deve devolver um int em todo caminho desta forma iniciante. Se o corpo imprime e nunca devolve, você voltou à ideia da página Tip; esta página quer o número nas mãos de main.

void versus um retorno tipado

Leia as duas formas lado a lado. Um método void executa o corpo e termina. Um método com retorno tipado deve devolver um valor com return. main trata a chamada como esse valor quando o tipo de retorno não é void.

📊 corpo void versus return

Forma O que o método faz O que main costuma fazer
void show(int n) imprime dentro do corpo chama show(9); e pode não imprimir mais nada
int twice(int n) return n * 2; imprime ou guarda twice(7)

Uma confusão comum é colocar System.out.println(n * 2); dentro de twice e deixar o cabeçalho como int sem return. Então o javac reclama, ou você muda o cabeçalho de volta para void e deixa de ter um valor para main imprimir a partir da chamada. Outra confusão é escrever return; sem valor enquanto o cabeçalho diz int. Conserve return n * 2; para que o tipo da expressão devolvida bata com int. Escrever System.out.println("twice"); em main imprime a palavra twice; não chama o método. Conserve println(twice(7)) quando quiser 14 na tela.

Uma demo greet sobrada da página Tip que só imprime hi lena dentro do método pode ficar no mesmo arquivo e confundir a tela. Limpe main até o println que usa twice, e conserve um método que devolve. Não aninhe twice dentro das chaves de main. Os métodos ficam dentro da classe, ao lado de main. Feche as chaves de twice antes de a classe terminar.

Antes de overloading

Você pode escrever static int twice(int n), devolver um valor calculado e imprimir esse valor a partir de main. A tela mostra o número que main recebeu, não uma linha que o método imprimiu sozinho. void é o cabeçalho errado quando você precisa de um valor de volta. A próxima página é overloading, onde mais de um método pode partilhar um nome quando as listas de parâmetros diferem.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
6
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo