Duvida com operador aritmetico e teclado. RESOLVIDO

11 respostas
A

Bom dia!
Eu preciso fazer uma calculadora console, só para operações + - * e /.

Eu nao sei como receber do teclado o operador.
Receberei 3 parametros, int, ? , int.
mas como usar esso operador?

Brigada!

11 Respostas

B

Do teclado (Dispositivo de Entrada Padrão, em java: System.in) você só vai receber Strings.

Suponho que querem que você contrua um parser para expressões matemáticas. Esse parser vai ler essa String e transformar para um formato interno do teu sistema, separando os operandos dos operadores, e vendo quais operações tem que acontecer primeiro (multiplicação e divisão tem preferência sobre adição e subtração).

Depois outro subsistema vai ler esse formato interno e calcular o resultado, que depois você devolve para imprimir no console.

PS: Se o objetivo não é aprender a construir parsers, use o ScriptEngine que vem com o Java SE. A engine de JavaScript já faz todo o trabalho.

A

Olha o que eu tentei fazer, mas deu erro....deve ter varios, mas se puder me ajudar, agradeço!!!!

[code]import java.util.Scanner;

public class Calculadora {

public static void main(String[] args) {

System.out.println("Digite o que quiser sua operação:");

Scanner teclado = new Scanner(System.in);
int primeiroValor = teclado.nextInt();

Scanner opera = new Scanner(System.in);
String operador = opera.next();

Scanner segundo = new Scanner(System.in);
int segundoValor = segundo.nextInt();
}

public void calculo(int primeiroValor, String operador, int segundoValor) {
if (operador == "+") {
int resultado = primeiroValor + segundoValor;
System.out.println(resultado);
}
if (operador == "-") {
int resultado = primeiroValor - segundoValor;
System.out.println(resultado);
}
if (operador == "*") {
int resultado = primeiroValor * segundoValor;
System.out.println(resultado);
}
if (operador == "/") {
int resultado = primeiroValor / segundoValor;
System.out.println(resultado);
} else {
System.out.println("Valor inválido");
}
}
}

thiago_spdvr

Vc pode primeiro escolher qual a operação ex:
1 - Adição
2 - Subtração
3 - Multiplicação
4 - Divisão

Depois efetuar a operação desejada.

Ou então dar uma olhada na classe Scanner.
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html

thiago_spdvr

Não se compara Strings com operadores lógicos, use o metodo .equals();

isso if (operador == "+") { por isso if (operador.equals("+")) {

Roger75

No seu método main está faltando chamar o método calculo. E se não criar uma instância de Calculo para chamar este método declare-o como static.

thiago_spdvr
public void calculo(int primeiroValor, String operador, int segundoValor) {
        if (operador.equals("+")) {
            int resultado = primeiroValor + segundoValor;
            System.out.println("O Resultado é: "+resultado);
        }
        if (operador.equals("-")) {
            int resultado = primeiroValor - segundoValor;
            System.out.println("O Resultado é: "+resultado);
        }
            if (operador.equals("*")) {
            int resultado = primeiroValor * segundoValor;
            System.out.println("O Resultado é: "+resultado);
        }
            if (operador.equals("/")) {
            int resultado = primeiroValor / segundoValor;
            System.out.println("O Resultado é: "+resultado);
        }
            else {
            System.out.println("Valor inválido");
        }
}
A

Entao, eu fiz as modificações, acho que está faltando um parse da string que recebo do scanner para o int que preciso no meu método.
Não está indo...se puderem me ajudar!
Obrigada pelas ajudas já!

import java.util.Scanner;

public class Calculadora {

	public void calcula(int a, String op, int b) {
		System.out.println("Digite o que quiser sua operação:");
		Scanner teclado = new Scanner(System.in);
		int primeiroValor = teclado.nextInt();

		Scanner opera = new Scanner(System.in);
		String operador = opera.next();

		Scanner segundo = new Scanner(System.in);
		int segundoValor = segundo.nextInt();

		if (operador.equals("+")) {
			int resultado = primeiroValor + segundoValor;
			System.out.println("O resultado é:" + resultado);
		}
		if (operador.equals("-")) {
			int resultado = primeiroValor - segundoValor;
			System.out.println("O resultado é:" + resultado);
		}
		if (operador.equals("*")) {
			int resultado = primeiroValor * segundoValor;
			System.out.println("O resultado é:" + resultado);
		}
		if (operador.equals("/")) {
			int resultado = primeiroValor / segundoValor;
			System.out.println("O resultado é:" + resultado);
		} else {
			System.out.println("Valor inválido");
		}

	}

	public static void main(String[] args) {

		System.out.println("Digite o que quiser sua operação:");
		Scanner teclado = new Scanner(System.in);

		int primeiroValor = teclado.nextInt();

		Scanner opera = new Scanner(System.in);
		String operador = opera.next();

		Scanner segundo = new Scanner(System.in);
		int segundoValor = segundo.nextInt();

		int a = primeiroValor;
		String op = operador;
		int b = segundoValor;

		Calculadora cal = new Calculadora();
		cal.calcula(a, op, b);
	}
}
thiago_spdvr

Ve agora

public class Calculadora {
    
    public void calcula(int a, String op, int b) {
        int resultado;
        try{
            if (op.equals("+")) {
                    resultado = a + b;
                    System.out.println("O resultado é: " + resultado);
            }
            else if (op.equals("-")) {
                    resultado = a - b;
                    System.out.println("O resultado é: " + resultado);
            }
            else if (op.equals("*")) {
                    resultado = a * b;
                    System.out.println("O resultado é: " + resultado);
            }
            else if (op.equals("/")) {
                    resultado = a / b;
                    System.out.println("O resultado é: " + resultado);
            }
            else {
                    System.out.println("Operador inválido");
            }
        }
        catch(Exception er){
            System.out.println("Erro ao Calcular: "+er);
        }

    }

	public static void main(String[] args) {

		System.out.println("Digite o primeiro Valor: ");
		Scanner teclado = new Scanner(System.in);
		int primeiroValor = teclado.nextInt();

                System.out.println("Digite o Simbolo Correspondente a operação: ");
		Scanner opera = new Scanner(System.in);
		String operador = opera.next();

		System.out.println("Digite o segundo Valor: ");
                Scanner segundo = new Scanner(System.in);
		int segundoValor = segundo.nextInt();

		Calculadora cal = new Calculadora();
		cal.calcula(primeiroValor, operador, segundoValor);
	}
}
A

Thiago, mtoo obrigada!!!
Deu certinho!!!
Eu estava tentando fazer tudo direto, mas pelo visto só buscando uma tecla por vez, certo?

Thanks!

thiago_spdvr

Vc pode tentar fazer tudo de uma vez, mas seria mais complicado uma forma que funcionasse bem.

Outra coisa, não esquece de colocar [Resolvido] no titulo do tópico quando não restar mais nenhuma duvida.

A

Por hora tá otimo!

brigada!

Criado 15 de abril de 2010
Ultima resposta 15 de abr. de 2010
Respostas 11
Participantes 4