Operações Matématicas
Quero fazer cálculos matemáticos simples como: somar, subtrair, multiplicar e dividir, com metódos. Mas só falta um detalhe. Vamos supor que o usuário de posse do resultado por exemplo: 2+2 = 4, queira subtrair ou multiplicar ou dividir de outro valor:
10+3-5*6/9;
Alguem pode me ajudar?
10+3-5*6/9;
Alguem pode me ajudar?
Carlos Leonel
Curtidas 0
Respostas
Tiago
02/11/2012
Boa tarde Carlos,
uma solução poderia ser a seguinte. vamos imaginar o cenário que você colocou.
Espero ter ajudado.
uma solução poderia ser a seguinte. vamos imaginar o cenário que você colocou.
int total=2; // Vamos supor que o usuário quer tanto somar quanto multiplicar e até mesmo dividir total+=10+3-5*6/9;// Você tem que manter o valor do seu total e utiliza-lo para cálculos futuros, a não ser que na sua calculadora possua um botão que resete o valor a expressão acima equivale a: total=2+10+3-5*6/9;
Espero ter ajudado.
GOSTEI 0
Carlos Leonel
02/11/2012
Colegas sobre o assunto anteriormente proposto vejam o código abaixo:
import java.util.Scanner;
Com o Código acima caso o usuário queira com o resultado obtido somar, subtrair, dividir, multiplicar ou começar tudo novamente?
import java.util.Scanner;
import java.util.Scanner;
public class calc {
public static int somar( int num1, int num2){
int total;
total = num1+num2;
return total;
}
public static int subtrair( int num1, int num2){
int total;
total = num1-num2;
return total;
}
public static int multiplicar( int num1, int num2){
int total;
total = num1*num2;
return total;
}
public static int dividir( int num1, int num2){
int total;
total = num1/num2;
return total;
}
/**
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int val1, val2, resultado = 0;
String continuacao,operacao;
do{
System.out.println("Digite o valor do 1º número:");
num1 = input.nextFloat();
System.out.println("Digite o valor do 2º número:");
num2 = input.nextFloat();
System.out.println("Digite a opção desejada +,-,*,/");
operacao = input.next();
switch(operacao){
case "+":
resultado = somar(val1,val2);
break;
case "-":
resultado = subtrair(val1,val2);
break;
case "*":
resultado = multiplicar(val1,val2);
break;
case "/":
resultado = dividir(val1,val2);
break;
default:
System.out.println("Operação Inválida");
}
System.out.printf("O valor do calculo e: %.2f\n",resultado);
System.out.println("Deseja continuar (S/N)?\n");
continuacao = input.next();
}while (continuacao.equals("S"));
System.out.println("Operacao Finalizada");
// TODO Auto-generated method stub
}
}
Com o Código acima caso o usuário queira com o resultado obtido somar, subtrair, dividir, multiplicar ou começar tudo novamente?
GOSTEI 0
Tiago
02/11/2012
Você poderia utilizar a variável com o valor total, nesse bloco while... ou seja enquanto for positivo então a variável será sempre alterada...Precisa ver apenas uma forma de deixa-la dinâmica
Espero ter ajudado.
while (continuacao.equals("S"));Espero ter ajudado.
GOSTEI 0
Eduardo Pessoa
02/11/2012
Tiago, tem como vc me explicar esse codigo??? por favor
GOSTEI 0
Carlos Leonel
02/11/2012
Tiago tem como refazer este código. Só falta este detalhe.Obrigado.
GOSTEI 0
Tiago
02/11/2012
Claro farei as modificações e postarei em seguida... eu colei o código no eclipse e me mostrou alguns erros... esse código está funcionando?
GOSTEI 0
Carlos Leonel
02/11/2012
está sim mas se houver seria um grande favor em identificá-los.
Obrigado,
Carlos
Obrigado,
Carlos
GOSTEI 0
Eduardo Pessoa
02/11/2012
Tiago???
GOSTEI 0
Sidney Tavares
02/11/2012
Bom dia a todos, tomei a liberdade de fazer algumas alterações no código, pois também copiei e colei no eclipse e gerou alguns erros, não sei no Java 7, mas no 6 na instrução switch só é aceito como argumento os primitivos char, byte, int ou short, além de um enum, abaixo o meu código:
Outro erro que notei é que as variáveis são todas do tipo int mas havia chamada a nextFloat() para receber o número, bem, essa resumidamente foi a maneira que encontrei. Abraço.
package teste.calculos.simples;
import java.io.IOException;
import java.util.Scanner;
public class Calc {
public static int somar(int num1, int num2) {
int total;
total = num1 + num2;
return total;
}
public static int subtrair(int num1, int num2) {
int total;
total = num1 - num2;
return total;
}
public static int multiplicar(int num1, int num2) {
int total;
total = num1 * num2;
return total;
}
public static int dividir(int num1, int num2) {
int total;
total = num1 / num2;
return total;
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
int val1, val2, resultado = 0;
int continuacao;
char operacao;
do {
System.out.println("Digite o valor do 1º número:");
val1 = input.nextInt();
System.out.println("Digite o valor do 2º número:");
val2 = input.nextInt();
System.out.println("Digite a opção desejada: " + '+' + '-' + '*' + '/');
operacao = (char) System.in.read();
switch (operacao) {
case '+':
resultado = somar(val1, val2);
break;
case '-':
resultado = subtrair(val1, val2);
break;
case '*':
resultado = multiplicar(val1, val2);
break;
case '/':
resultado = dividir(val1, val2);
break;
default:
System.out.println("Operação Inválida");
}
System.out.printf("O valor do calculo e: %d\n", resultado);
System.out.println("Deseja continuar (S/N)?\n");
continuacao = input.nextInt();
} while (continuacao == 1);
System.out.println("Operacao Finalizada");
// TODO Auto-generated method stub
}
}
Outro erro que notei é que as variáveis são todas do tipo int mas havia chamada a nextFloat() para receber o número, bem, essa resumidamente foi a maneira que encontrei. Abraço.
GOSTEI 0
Carlos Leonel
02/11/2012
Sidney, Obrigado também pela ajuda. Realmente a versão utilizada neste código foi a JSE 1.7 por isso é que você não conseguiu. Quanto aos métodos foram todos modificados para float. A dúvida que eu lancei foi a que se o usuário quiser com o resultado obtido continuar a fazer todas as operações como se fosse uma calculadora tipo: 2+2 = 4-1*3/2^3, claro obdecendo a ordem de precedência.
GOSTEI 0
Alisson Santos
02/11/2012
conseguiu sanar sua duvida
GOSTEI 0
Carlos Leonel
02/11/2012
Pessoal, agradeço a iniciativa de todos. Talvez a minha dúvida seja simples para alguns de resolver para outros, que é o meu caso, complicado. Pelo que sei eu teria que criar outra variável para guardar o resultado obtido e com ele executar tantas ou quantas eu quiser. Acontece que eu não sei como colocar isso no código. Só falta este detalhe para dar finalizar a minha Calculadora.
GOSTEI 0
Carlos Leonel
02/11/2012
pessoal eu so gostaria de saber onde eu coloco o codigo para continuar a efetuar as operacoes ate o usuario finaliza
GOSTEI 0
Carlos Leonel
02/11/2012
Att: Tiago de Oliveira Vale
Tem alguam notícia a respeito do código que lhe passei?
Carlos
Tem alguam notícia a respeito do código que lhe passei?
Carlos
GOSTEI 0
Claudia Nogueira
02/11/2012
É pra um exercício de faculdade?
Na minha época quando tinha esses exercícios, pra ficar repetindo alguma coisa, eu usava um while, e enquanto não digitasse alguma tecla, não fechava a aplicação.
Se for isso, poderia fazer um loop infinito e verificando alguma tecla, enquanto o usuário não digitar determinada tecla, continua fazendo as operações que você precisa.
Na minha época quando tinha esses exercícios, pra ficar repetindo alguma coisa, eu usava um while, e enquanto não digitasse alguma tecla, não fechava a aplicação.
Se for isso, poderia fazer um loop infinito e verificando alguma tecla, enquanto o usuário não digitar determinada tecla, continua fazendo as operações que você precisa.
GOSTEI 0
Carlos Leonel
02/11/2012
Claudia
Sim se é a pergunta que você me fez. Meu único e somente único problema é como criar isso dentro do código.
Sim se é a pergunta que você me fez. Meu único e somente único problema é como criar isso dentro do código.
GOSTEI 0
Tiago
02/11/2012
Carlos desculpe a minha ausência, estive ocupado esses dias... mas vamos la.. a minha ideia é a seguinte
Eu acho que seria mais ou menos algo dessa linha, desculpe não tive tempo de analisar o seu código.Mas se eu tivesse de fazer faria algo parecido com o de cima.Espero ter ajudado.
While(true{)// neste while, utilize uma condição que pergunte ao usuário se ele ainda quer continuar a operação(Isso é apenas uma forma).
total+=(expressão)//Desta forma você utilizara o valor que ainda esta na aplicação, ou seja ele não estará zerado.
System.Out.Println("Resultado: "+total);
}
Eu acho que seria mais ou menos algo dessa linha, desculpe não tive tempo de analisar o seu código.Mas se eu tivesse de fazer faria algo parecido com o de cima.Espero ter ajudado.
GOSTEI 0
Carlos Leonel
02/11/2012
Tiago,
O meu maior problema que agora viraram dois é: dentro do Switch se o cara digitar algo que não esteja listado dentro das operações o meu default de saída é "Operação inválida". Com essa mensagem tenho que pedir que o usuário digite a operação correta e aí sim ele me dê o resultado. E, o que mais está me chateando é a questão do resultado caso ele queira continuar a operação. Vou te mandar o código com os métodos. Se puder fazer a gentileza de refazê-lo eu agradeço:
import java.util.Scanner;;
public class Calculadora {
public static float somar(float num1, float num2){
float total;
total = num1 + num2;
return total;
}
public static float subtrair (float num1, float num2){
float total;
total = num1 - num2;
return total;
}
public static float multiplicar (float num1,float num2){
float total;
total = num1*num2;
return total;
}
public static float dividir (float num1, float num2){
float total;
total = num1/num2;
return total;
}
public static float potencia( float num, float pot ){
float resultado;
resultado = 1;
if (pot==0){
total = 1
}
for ( int cont = 1;cont<pot;cont++ ){
resultado = resultado * num;
}
return resultado;
}
/**
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
float val1, val2, resultado = 0, valortotal = 0;
String continuacao,operacao;
System.out.println("Digite o valor do 1º número:");
val1 = input.nextFloat();
System.out.println("Digite o valor do 2º número:");
val2 = input.nextFloat();
System.out.println("Digite a opção desejada +,-,*,/,^");
operacao = input.next();
do{
switch(operacao){
case "+":
resultado = somar(val1,val2);
break;
case "-":
resultado = subtrair(val1,val2);
break;
case "*":
resultado = multiplicar(val1,val2);
break;
case "/":
resultado = dividir(val1,val2);
break;
case "^":
resultado = potencia(val1,val2);
break;
default:
System.out.println("Operação Inválida");
}
System.out.printf("O valor do calculo e: %.2f\n",resultado);
System.out.println("Deseja continuar (S/N)?\n");
continuacao = input.next();
}while (continuacao.equals("S"));
System.out.println("Operacao Finalizada");
}
}
O meu maior problema que agora viraram dois é: dentro do Switch se o cara digitar algo que não esteja listado dentro das operações o meu default de saída é "Operação inválida". Com essa mensagem tenho que pedir que o usuário digite a operação correta e aí sim ele me dê o resultado. E, o que mais está me chateando é a questão do resultado caso ele queira continuar a operação. Vou te mandar o código com os métodos. Se puder fazer a gentileza de refazê-lo eu agradeço:
import java.util.Scanner;;
public class Calculadora {
public static float somar(float num1, float num2){
float total;
total = num1 + num2;
return total;
}
public static float subtrair (float num1, float num2){
float total;
total = num1 - num2;
return total;
}
public static float multiplicar (float num1,float num2){
float total;
total = num1*num2;
return total;
}
public static float dividir (float num1, float num2){
float total;
total = num1/num2;
return total;
}
public static float potencia( float num, float pot ){
float resultado;
resultado = 1;
if (pot==0){
total = 1
}
for ( int cont = 1;cont<pot;cont++ ){
resultado = resultado * num;
}
return resultado;
}
/**
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
float val1, val2, resultado = 0, valortotal = 0;
String continuacao,operacao;
System.out.println("Digite o valor do 1º número:");
val1 = input.nextFloat();
System.out.println("Digite o valor do 2º número:");
val2 = input.nextFloat();
System.out.println("Digite a opção desejada +,-,*,/,^");
operacao = input.next();
do{
switch(operacao){
case "+":
resultado = somar(val1,val2);
break;
case "-":
resultado = subtrair(val1,val2);
break;
case "*":
resultado = multiplicar(val1,val2);
break;
case "/":
resultado = dividir(val1,val2);
break;
case "^":
resultado = potencia(val1,val2);
break;
default:
System.out.println("Operação Inválida");
}
System.out.printf("O valor do calculo e: %.2f\n",resultado);
System.out.println("Deseja continuar (S/N)?\n");
continuacao = input.next();
}while (continuacao.equals("S"));
System.out.println("Operacao Finalizada");
}
}
GOSTEI 0
Carlos Leonel
02/11/2012
Pessoal alguem conseguiu decifrar o enigma?
GOSTEI 0
Thiago Lopes
02/11/2012
vamos lá:
linha 28 faltou um ;
bom, vamos tentar entao resolver essa questao do resultado com reutilização;
em todos os metodos adicione o parametro com este resultado alem dos que ja existem inves de criar a variavel total dentro do metodo.. vou deixar um exemplo simples do seu codigo para ver como vai ficar:
o outro jeito de realizar o mesmo procedimento seria criar um metodo proprio para isso.. ex:
onde ao chamar a função para adicionar tal valor voce chamaria esta nova função com a escolhida atribuida ao segundo parametro...
como pode ver voce poderia utilizar com função ou somente com um simples incremento e ao fim de cada operação displayasse na tela o resultado
existem diversos metodos mais inteligentes e praticos.. mas achei esses 2 mais simples...
espero ter ajudado.
linha 28 faltou um ;
bom, vamos tentar entao resolver essa questao do resultado com reutilização;
em todos os metodos adicione o parametro com este resultado alem dos que ja existem inves de criar a variavel total dentro do metodo.. vou deixar um exemplo simples do seu codigo para ver como vai ficar:
public class Calculadora {
public static float somar(float num1, float num2, float display){
display += num1 + num2;
return display;
}
public static float subtrair (float num1, float num2, float display){
display += num1 - num2; // ou se preferir -=
return display;
}
}
o outro jeito de realizar o mesmo procedimento seria criar um metodo proprio para isso.. ex:
public class Calculadora {
public static float chamaOperacao(float valortotal, float valorDaConta){
return valortotal += valorDaConta;
}
public static float somar(float num1, float num2){
float total;
total = num1 + num2;
return total;
}
public static float subtrair (float num1, float num2){
float total;
total = num1 - num2;
return total;
}
}
onde ao chamar a função para adicionar tal valor voce chamaria esta nova função com a escolhida atribuida ao segundo parametro...
public static void main(String[] args) {
float valorTotal = 0;
switch(operacao){
case "+":
valorTotal = chamaOperacao(valorTotal, somar(val1,val2));
break;
case "-":
valorTotal += subtrair(val1,val2);
break;
default:
System.out.println("Operação Inválida");
}
}
como pode ver voce poderia utilizar com função ou somente com um simples incremento e ao fim de cada operação displayasse na tela o resultado
existem diversos metodos mais inteligentes e praticos.. mas achei esses 2 mais simples...
espero ter ajudado.
GOSTEI 0
Thiago Lopes
02/11/2012
Analisando meu ultimo exemplo vi um erro, inves de criar essa função, utilize somente a variavel valor total dentro da função...
=)
valorTotal = soma(valorTotal, num2);
=)
GOSTEI 0