Correção/Alteração no programa
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
Posts
24/09/2018
Marcio Souza
if ( (soma == (int) soma) ) { valor = (soma / numero); fazer = 1; }
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); } }
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); } }
Clique aqui para fazer login e interagir na Comunidade :)