alguem pode me ajudar com esse desafio java
- #Java
ja tentei varias formas mas da erro banco pan java developer
Acesse bootcamps ilimitados e +650 cursos pra sempre
ja tentei varias formas mas da erro banco pan java developer
LM
O erro está no 1.0 que você escreveu. O programa entende dividindo ponto flutuante por número inteiro. Pode fazer um casting e escrever desse jeito:
h += (double) 1 / i;
Com isso o valor de h será convertido para tipo double.
Para exibir o resultado final pode usar:
System.out.printf("%.0f", h)
ou se preferir
System.out.println(Math.round(h))
Com printf você determina quantas casas decimais podem aparecer além de adicionar texto sem concatenar.
Em Math.round() você arredonda para o número inteiro mais próximo
Olá Matheus, tudo bem?
O erro ocorre porque ao dividir o double pelo inteiro, o valor calculado dentro do laço vai acabar retornando um número sem considerar as casas decimais.
Tem a opção que o Lucas informou e também você pode colocar for (double i = 1.0; i <= n; i++), pois ao dividir o double por double ele vai retornar o valor com casas decimais.
Mas no final você tem que arredondar pois as respostas é em inteiro (pode utilizar a Math.round nesse caso).
Espero ter ajudado!
Olá Matheus,
Observe a fórmula que foi fornecida para você
H += 1.0/i é diferente do que foi fornecido
Segue a solução meu amigo, não copie e cole, leia e tente entender o problema e a resolução.
public static void main(String[] Args) {
double h = 0;
Scanner sc = new Scanner(System.in);
double n = sc.nextDouble();
for (int i = 1; i <= n; i++) {
h += 1.0 / i;
}
System.out.println(String.format("%.0f",h));
sc.close();
}