Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exercício: Comparar Números

Comparação entre números independente de , ou . ou inteiro e decimal com tratamento para não aceitar outros símbolos que não sejam números:

import java.util.Scanner;

public class ComparaNumero { public static void main(String[] args) { Scanner sc = new Scanner(System.in);

    System.out.print("Digite o primeiro número: ");
    String input1 = sc.nextLine();

    System.out.print("Digite o segundo número: ");
    String input2 = sc.nextLine();

    input1 = input1.replace(",", ".");
    input2 = input2.replace(",", ".");

    try {
        double numero1 = Double.parseDouble(input1);
        double numero2 = Double.parseDouble(input2);

        if (numero1 == numero2) {
            System.out.println("Os números são iguais.");
        } else if (numero1 > numero2) {
            System.out.println("O primeiro número é maior.");
        } else {
            System.out.println("O segundo número é maior.");
        }

    } catch (NumberFormatException e) {
        System.out.println("Erro: Por favor, insira números válidos.");
    }

    sc.close();
}

}

2 respostas
solução!

Oi, Sheila! Como vai?

Seu código chamou atenção pela forma como lida com diferentes formatos de número usando replace(",", "."). Isso mostra preocupação em tornar a entrada do usuário mais flexível e robusta.

Uma dica interessante para o futuro é validar se a entrada contém apenas números e vírgulas/pontos antes de converter. Veja este exemplo

if (input1.matches("[0-9.,]+") && input2.matches("[0-9.,]+")) {
    // continua o processamento
}

Esse código usa matches para garantir que apenas dígitos, ponto ou vírgula estejam presentes.

Ícone de sugestão Para saber mais:

Expressões regulares como [0-9.,]+ são ferramentas poderosas para validar padrões de texto. Por exemplo, se quiser aceitar apenas números com no máximo uma vírgula ou ponto, pode usar:

input.matches("\\d+[.,]?\\d*")

Isso garante que o número seja composto por dígitos, opcionalmente seguidos por um ponto ou vírgula e mais dígitos — útil para validar valores decimais. Essas validações são simples, mas ajudam a evitar erros ao converter dados com Double.parseDouble().

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá Armano! Muito obrigada pela dica! Já anotei aqui.