10 Chatbot no Console
10.1 Objetivo da aula
Agora vamos juntar o que aprendemos e montar um chatbot funcional no terminal. Nesta atividade, o foco é transformar conceitos isolados em uma aplicação completa, simples e útil. Você vai praticar entrada de dados, estruturas condicionais, laços de repetição e organização em classes. No final, terá um programa interativo que responde comandos e mantém um pequeno histórico da conversa.
10.2 Estrutura sugerida
- Classe
Chatbot - Método
responder - Loop com
Scanner - Histórico com
ArrayList
Essa estrutura separa bem as responsabilidades do programa. A classe Chatbot concentra as regras de resposta, enquanto a classe principal cuida da interação com o usuário. Com essa divisão, o código fica mais fácil de ler, testar e evoluir com novos comandos.
10.3 Código base
O exemplo abaixo já entrega um fluxo completo: inicia o bot, lê mensagens do usuário e responde até o comando de saída. Leia com calma e observe como cada parte se conecta com o conteúdo estudado nos capítulos anteriores.
import java.util.ArrayList;
import java.util.Scanner;
class Chatbot {
private final String nome;
private final ArrayList<String> historico = new ArrayList<>();
public Chatbot(String nome) {
this.nome = nome;
}
public String responder(String msg) {
historico.add(msg);
if (msg.equalsIgnoreCase("oi")) return "Olá!";
if (msg.equalsIgnoreCase("ajuda")) return "Comandos: oi, ajuda, historico, sair";
if (msg.equalsIgnoreCase("historico")) return "Total: " + historico.size();
return "Não entendi.";
}
public String getNome() {
return nome;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Chatbot bot = new Chatbot("JavaBot");
String msg = "";
System.out.println("Bot " + bot.getNome() + " iniciado. Digite sair para encerrar.");
while (!msg.equalsIgnoreCase("sair")) {
System.out.print("Você: ");
msg = sc.nextLine();
if (!msg.equalsIgnoreCase("sair")) {
System.out.println("Bot: " + bot.responder(msg));
}
}
System.out.println("Bot: Até logo!");
sc.close();
}
}Perceba que o método responder é o coração do chatbot. Ele recebe a mensagem, registra no histórico e decide o texto de retorno com base em comparações simples. Esse padrão é ótimo para começar e pode ser evoluído depois com regras mais avançadas.
Também vale notar o uso do laço while, que mantém a conversa ativa até o usuário digitar sair. Esse comportamento simula um chat real em modo texto e ajuda a treinar raciocínio de execução contínua.
Se quiser avançar, você pode padronizar entradas com trim() para remover espaços extras no começo e no fim da frase. Outra melhoria comum é tratar variações de escrita, como acentos e diferenças de maiúsculas e minúsculas.
- Adicione o comando
hora. - Adicione o comando
nome. - Salve o histórico em arquivo texto.
- Exiba uma mensagem de boas-vindas mais detalhada com exemplos de comandos disponíveis.
- Crie uma resposta padrão mais amigável para quando o bot não entender a mensagem.
- Mostre as últimas 3 mensagens do histórico em vez de apenas o total.
Neste capítulo, o estudo de chatbot no console se torna realmente valioso quando você deixa de enxergar o conteúdo como uma lista de regras isoladas e passa a observar como cada decisão técnica influencia a qualidade do programa, a facilidade de manutenção e a capacidade de adaptar a solução sem quebrar o que já estava funcionando, especialmente em atividades progressivas que simulam situações de projeto real.
Para consolidar o aprendizado com profundidade, vale estruturar sua prática em uma sequência objetiva na qual você revisa o conceito principal, implementa um exemplo pequeno e legível e, logo em seguida, analisa de maneira crítica se houve melhoria concreta no fluxo conversacional, no estado da interação e na evolução incremental, porque esse ciclo consciente transforma estudo passivo em desenvolvimento de critério técnico.
Quando esse processo se repete ao longo das semanas, você começa a perceber que sua evolução não depende de decorar respostas prontas, mas sim de interpretar problemas com mais maturidade, justificar escolhas com argumentos claros e construir soluções cada vez mais consistentes, o que representa exatamente a transição de iniciante para praticante autônomo dentro da trilha de Java.