Método isFinite() em Java para Doubles

JavaBeginner
Pratique Agora

Introdução

O método isFinite() em Java é usado na linguagem Java para verificar se o valor double passado é um valor finito ou não. Ele retorna o valor booleano true se o valor double passado contiver um valor finito, e retorna false para valores NaN e infinitos. Neste laboratório, você aprenderá como usar o método isFinite() em Java.

Configurar o ambiente Java

Se você ainda não instalou o Java em seu sistema, baixe a versão mais recente e instale-a. Verifique a instalação executando o seguinte comando:

java -version

Criar uma classe Java

Crie uma nova classe Java chamada DoubleIsFiniteDemo no diretório ~/project.

cd ~/project
touch DoubleIsFiniteDemo.java

Escrever o código Java

Nesta etapa, escreveremos o código Java usando o método isFinite() para verificar se o valor double passado é um valor finito ou não. Copie e cole o seguinte código em DoubleIsFiniteDemo.java:

public class DoubleIsFiniteDemo {
    public static void main(String[] args) {
        double d1 = 100.0;
        double d2 = Double.POSITIVE_INFINITY;
        double d3 = Double.NEGATIVE_INFINITY;
        double d4 = Double.NaN;

        boolean b1 = Double.isFinite(d1);
        boolean b2 = Double.isFinite(d2);
        boolean b3 = Double.isFinite(d3);
        boolean b4 = Double.isFinite(d4);

        System.out.println("Is d1 finite? " + b1);
        System.out.println("Is d2 finite? " + b2);
        System.out.println("Is d3 finite? " + b3);
        System.out.println("Is d4 finite? " + b4);
    }
}

O código acima declara quatro variáveis double d1, d2, d3 e d4 com valores finitos, infinito positivo, infinito negativo e NaN, respectivamente. Em seguida, ele usa o método isFinite() para verificar se cada uma das variáveis é finita ou não.

Compilar e executar o código Java

Compile o código usando o seguinte comando:

javac DoubleIsFiniteDemo.java

Após a compilação, você pode executar o código usando o seguinte comando:

java DoubleIsFiniteDemo

A saída do programa deve ser:

Is d1 finite? true
Is d2 finite? false
Is d3 finite? false
Is d4 finite? false

Personalizar o programa

Nesta etapa, você pode personalizar o programa para testar diferentes valores. Abra DoubleIsFiniteDemo.java no seu editor de texto favorito e modifique os valores atribuídos às variáveis double. Por exemplo:

public class DoubleIsFiniteDemo {
    public static void main(String[] args) {
        double d1 = 1.23;
        double d2 = 4.56;
        double d3 = Double.NEGATIVE_INFINITY;
        double d4 = Double.NaN;

        boolean b1 = Double.isFinite(d1);
        boolean b2 = Double.isFinite(d2);
        boolean b3 = Double.isFinite(d3);
        boolean b4 = Double.isFinite(d4);

        if (b1) {
            System.out.println("d1 is a finite double value.");
        } else {
            System.out.println("d1 is not a finite double value.");
        }

        if (b2) {
            System.out.println("d2 is a finite double value.");
        } else {
            System.out.println("d2 is not a finite double value.");
        }

        if (b3) {
            System.out.println("d3 is a finite double value.");
        } else {
            System.out.println("d3 is not a finite double value.");
        }

        if (b4) {
            System.out.println("d4 is a finite double value.");
        } else {
            System.out.println("d4 is not a finite double value.");
        }
    }
}

Recompilar e executar o código Java

Compile o código novamente usando o seguinte comando:

javac DoubleIsFiniteDemo.java

Após a compilação, você pode executar o programa personalizado usando o seguinte comando:

java DoubleIsFiniteDemo

Dependendo dos valores que você inseriu, o programa exibirá o resultado correspondente.

Usar o método isFinite() em um método definido pelo usuário

Nesta etapa, criaremos um método definido pelo usuário chamado printIsFinite() que recebe um valor double como entrada e imprime se ele é finito ou não usando o método isFinite().

Adicione o seguinte método dentro da classe DoubleIsFiniteDemo:

public static void printIsFinite(double d) {
    if (Double.isFinite(d)) {
        System.out.println(d + " is a finite double value.");
    } else {
        System.out.println(d + " is not a finite double value.");
    }
}

Em seguida, modifique o método main() da seguinte forma:

public static void main(String[] args) {
    double d1 = 1.23;
    double d2 = 4.56;
    double d3 = Double.NEGATIVE_INFINITY;
    double d4 = Double.NaN;

    printIsFinite(d1);
    printIsFinite(d2);
    printIsFinite(d3);
    printIsFinite(d4);
}

O método main passa cada uma das quatro variáveis double para o método printIsFinite(), que então verifica se o valor é finito ou não e imprime o resultado correspondente.

Recompilar e executar o código Java

Compile o código novamente usando o seguinte comando:

javac DoubleIsFiniteDemo.java

Após a compilação, você pode executar o programa usando o seguinte comando:

java DoubleIsFiniteDemo

A saída do programa deve ser:

1.23 is a finite double value.
4.56 is a finite double value.
-Infinity is not a finite double value.
NaN is not a finite double value.

Testar o código Java com valores de limite

Nesta etapa, testaremos o código Java com valores de limite para ver como o método isFinite() funciona.

Modifique o método main() da seguinte forma:

public static void main(String[] args) {
    double d1 = Double.MIN_VALUE;
    double d2 = Double.MAX_VALUE;
    double d3 = Double.POSITIVE_INFINITY;
    double d4 = Double.NaN;

    printIsFinite(d1);
    printIsFinite(d2);
    printIsFinite(d3);
    printIsFinite(d4);
}

O método main usa as constantes MIN_VALUE e MAX_VALUE da classe Double para atribuir os menores e maiores valores double finitos, respectivamente, a d1 e d2, e atribui valores de infinito positivo e NaN a d3 e d4, respectivamente.

Recompile e execute o código Java usando os comandos abaixo:

javac DoubleIsFiniteDemo.java
java DoubleIsFiniteDemo

A saída do programa deve ser:

4.9E-324 is a finite double value.
1.7976931348623157E308 is a finite double value.
Infinity is not a finite double value.
NaN is not a finite double value.

Resumo

Neste laboratório, você aprendeu como usar o método isFinite() do Java para verificar se um valor double é um valor finito ou não. Você também aprendeu como personalizar o programa para testar diferentes valores, como usar o método isFinite() em um método definido pelo usuário e como testar o código Java com valores de limite.