Ir ao conteúdo
  • Cadastre-se

Iniciante java - variável


Visitante

Posts recomendados

Olá, estou a fazer um exercício de c++ em java e ele precisa de numeros bem grandes ( imprimir a 199º linha do triangulo de pascal) ( no c++ estava declarando a variável como long long ).

No java o long não conseguiu suprir isso, alguém sabe um jeito de contornar isso?

Link para o comentário
Compartilhar em outros sites

você pode dar um help? Eu andei olhando na net e falam que é imutável, mas no meu código tenho q associar um vetor big integer o tempo todo com valores como 1, 199...

 

[Edit]

Consegui fazer as contas com ele mas o java aponta este erro:

Exception in thread "main" java.lang.NullPointerException
        at Triangulo_Pascal.gerar(Triangulo_Pascal.java:20)
        at Triangulo_Pascal.main(Triangulo_Pascal.java:38)

Linha 38:                 gerar(n_linhas, vetor);

Linha 20:             vector[j] = vector[j-1].add(vector[j]);

Link para o comentário
Compartilhar em outros sites

O BingInteger é imutável sim. Você sempre precisa coletar outra referencia após realizar operações, por exemplo:

 

BigInteger i = new BigInteger("1"); // Inciando com 1
i = i.add(new BigInteger("10"));

Seu nullpointer não tem relação com o fato dele ser imutável. Cole a linha 20 do seu source. Vamos analisar.

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Eduardo Frazão disse:

voce pode colar o source todo?

import java.util.Scanner;
import java.math.BigInteger;
public class Triangulo_Pascal{    
    public static void imprimir(int n_linhas, BigInteger[] vetor){
        System.out.printf("linha %d: ", n_linhas);
        for (int k = 1; k <= n_linhas+1; k++){
            if (k == n_linhas + 1){
                System.out.printf("1 ");
            }
            else{
                System.out.printf("%d ", vetor[k]);
            }
        }
        System.out.printf("\n");
    }
    
    public static void gerar(int n_linhas, BigInteger[] vetor){
        BigInteger[] vector = new BigInteger[n_linhas+1];
        for(int j = 1; j <= n_linhas; j++){
            vector[j] = vector[j-1].add(vector[j]);

        }
        for(int l = 0; l <= n_linhas; l++){
            vetor[l] = vector[l];
        }
    }
    
    public static void main(String[] args){
        Scanner input = new Scanner( System.in );
        int i, n_linhas;
        n_linhas = input.nextInt();
        while(n_linhas >= 0 && n_linhas <= 200){
            BigInteger[] vetor = new BigInteger[n_linhas+2];
            for (int a = 1; a <= n_linhas ; a++)
                BigInteger vetor[a] = new BigInteger("0");
            BigInteger vetor[0] = new BigInteger("1");
            for (int b = 0; b <= n_linhas; b++)
                gerar(n_linhas, vetor);
            imprimir(n_linhas, vetor);
            n_linhas = input.nextInt();
        }
    }
}

Até colocar o BigInteger o programa rodava, aí dps vi que as variáveis estouravam (porque preciso que rode de 0 a 200 (linhas do triangulo de pascal) e usa numeros mt grandes, daí tive que mexer com o big, mas é todo diferente x(

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...