Fórum Correção/Alteração no programa #597343
24/09/2018
0
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
Curtir tópico
+ 0Posts
24/09/2018
Marcio Souza
if ( (soma == (int) soma) ) {
valor = (soma / numero);
fazer = 1;
} Gostei + 0
24/09/2018
Hugo Silva
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
24/09/2018
Clayton Castro
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
Clique aqui para fazer login e interagir na Comunidade :)