Como que faz para limpar o Buffer do Java?

Preciso limpar um sinal aqui e ele não limpa.

Explique melhor, por gentileza.

Eu apaguei o sinal - e ele continua no cmd, eu não entendi

Nem eu, fala pra a gente o que você quer fazer e como você fez

1 curtida

eu reiniciei o programa e o PC , vou ver se deu certo aqui

ele tá dando o - , eu não digitei ele

Ok, mas e se o número for negativo? Vc pode fazer um replace pra tirar isso

1 curtida

Cara, pergunta idiota, o que é um replace ?

Que isso, não é idiota, foi erro meu falar assim por cima.

Vamos supor que você quer tirar uma letra de uma frase

String teste = "Ola amigo, tudo bem?";

Se quisermos tirar a letra “o”, é só usar o replace.

System.out.println(teste.replace("o", "");

Há casos que você pode trocar uma letra por outra, aí fica:

 System.out.println(teste.replace("o", "a");

Você não pode usar o replace com inteiro, mas pode converter pra String

 System.out.println(String.valueOf(aux).replace("-", "");
1 curtida

não sabia disso, obrigado ai

É porque o valor calculado estrapolou a magnitude de um int.

Não adianta você simplesmente remover o sinal, você tem que entender o motivo desse número estar negativo.
Se você remover o sinal, o número continuará errado.

Você declarou as variáveis a, b e aux como sendo do tipo int.

O tipo int possui 4 bytes (32 bits) isto significa que o maior valor positivo que ele pode armazenar, em binário, é:

01111111 11111111 11111111 11111111
 byte 3   byte 2   byte 1   byte 0

Isso corresponde ao número decimal:

2.147.483.647

Na sua sequência de Fibonacci depois do número 1.836.311.903 viria o número 2.971.215.073, que em binário corresponde à:

10110001 00011001 00100100 11100001
 byte 3   byte 2   byte 1   byte 0

Para o tipo de dado int, esse valor corresponde à:

‭-1.323.752.223‬

Porque ficou negativo?
Porque o bit mais à esquerda é utilizado para identificar o sinal, onde 0 indica que o número é positivo e 1 indica que o número é negativo.

Para você resolver o problema do seu cálculo, você terá de trocar as variáveis a, b e aux de int para long.

O long possui 8 bytes (64 bits), dessa forma o número 2.971.215.073 em binário será:

00000000 00000000 00000000 00000000 10110001 00011001 00100100 11100001
 byte 7   byte 6   byte 5   byte 4   byte 3   byte 2   byte 1   byte 0

Ou seja, o bit mais à esquerda continuará com 0, identificando um número positivo, aí o resultado decimal estará correto.

4 curtidas