Correção/Alteração no programa
E aí, pessoal! Sou novo tanto no mundo da programação quanto no fórum e estou precisando da ajuda de vocês. Estou aprendendo java e preciso fazer um programa que pegue o valor digitado(quebrado, como, por exemplo 2.52), some com ele mesmo diversas vezes até encontrar um número redondo e que seja <= 250. Em seguida, divida esse número encontrado pelo número digitado pelo usuário. A saída será a soma que foi dividida e o resultado da divisão.
Tentei fazer esse programinha básico mas quando digito qualquer valor e dou "enter" o programa não responde. Não dá erro algum, apenas não acontece nada. Segue o programa que fiz:
Agradeço quem puder ajudar! =)
Tentei fazer esse programinha básico mas quando digito qualquer valor e dou "enter" o programa não responde. Não dá erro algum, apenas não acontece nada. Segue o programa que fiz:
import java.util.Scanner;
import java.util.Locale;
public class Calculator{
public static void main(String[] args){
float numero, soma=0, valor=0;
int fazer=0;
Scanner input = new Scanner(System.in);
input.useLocale(Locale.US);
System.out.println("Digite o valor desejado: ");
numero = input.nextFloat();
input.close();
while(fazer != 1){
soma = soma + numero;
if((soma % 1 == 0) && (soma <= 250)){
valor = (soma / numero);
fazer = 1;
}else;
}
System.out.println("Soma: "+soma+"/n Valor: "+valor);
}
}Agradeço quem puder ajudar! =)
Clayton Castro
Curtidas 0
Respostas
Marcio Souza
24/09/2018
Uma maneira simples de fazer isso é pegar a soma e converte-las para um inteiro, ao fazer isso compare para ver se o resultado da conversão é igual ao valor armazenado em soma. Por exemplo soma vale 5.04, ao converter para inteiro o valor será 5, então, 5.04 é diferente 5. Quando esses valores forem iguais é porque chegou no resultado desejado.
if ( (soma == (int) soma) ) {
valor = (soma / numero);
fazer = 1;
} GOSTEI 0
Hugo Silva
24/09/2018
Olá, Clayton, boa tarde!
Então, acontece que no seu código, o valor deve ser menor ou igual a 250 (<= 250) e toda vez que esse valor é maior ele acaba entrando em um looping.
Acho que você deve acrescentar ao código uma verificação para quando o número for maior que 250 , fazer com que o código pare.
Exemplo:
Então, acontece que no seu código, o valor deve ser menor ou igual a 250 (<= 250) e toda vez que esse valor é maior ele acaba entrando em um looping.
Acho que você deve acrescentar ao código uma verificação para quando o número for maior que 250 , fazer com que o código pare.
Exemplo:
public class Calculator {
public static void main(String[] args){
float numero, soma=0, valor=0;
int fazer=0;
Scanner input = new Scanner(System.in);
input.useLocale(Locale.US);
System.out.println("Digite o valor desejado: ");
numero = input.nextFloat();
input.close();
while(fazer != 1){
soma += numero;
if((soma % 1 == 0) && (soma <= 250)){
valor = (soma / numero);
fazer = 1;
}else
if(soma > 250) {
System.out.println("A soma é maior : " + soma + "valor : " + valor);
return;
}
}
System.out.println("Soma: "+soma+"/n Valor: "+valor);
}
}
GOSTEI 0
Clayton Castro
24/09/2018
Boa noite.
Obrigado pelas respostas, porém, ainda não consegui resolver o problema.
Fiz as duas alterações sugeridas mas o programa continua com erro, porém, o programa agora funciona, mas calcula errado.
Estou testando com o número 2.48. O que deveria acontecer é: (2,48 + 2,48 + 2,48 + ... até atingir o primeiro número inteiro, que no caso é 62 e então dividir 62/2.48). O programa está retornando que a soma é maior que 250. Quando testo com o valor 2.1, o programa funciona corretamente.
Segue o programa atualizado:
Obrigado pelas respostas, porém, ainda não consegui resolver o problema.
Fiz as duas alterações sugeridas mas o programa continua com erro, porém, o programa agora funciona, mas calcula errado.
Estou testando com o número 2.48. O que deveria acontecer é: (2,48 + 2,48 + 2,48 + ... até atingir o primeiro número inteiro, que no caso é 62 e então dividir 62/2.48). O programa está retornando que a soma é maior que 250. Quando testo com o valor 2.1, o programa funciona corretamente.
Segue o programa atualizado:
import java.util.Scanner;
import java.util.Locale;
public class Calculator{
public static void main(String[] args){
float numero, soma=0, valor=0;
int fazer=0;
Scanner input = new Scanner(System.in);
input.useLocale(Locale.US);
System.out.print("Digite o valor desejado: ");
numero = input.nextFloat();
input.close();
while(fazer != 1){
soma = soma + numero;
if((soma == (int) soma) && (soma <= 250)){
valor = (soma/numero);
fazer = 1;
}else if(soma > 250){
System.out.println("A soma é maior: "+soma+"\\nValor: " +valor);
return;
}
}
System.out.println("Soma: "+soma+"\\nValor: "+valor);
}
}
GOSTEI 0