Calculadora , varios tipo;

6 respostas
gusthavosouza

Boa madrugada galera, to com uma duvida aqui,
tava fazendo uma calculadora pra fazer as operaçoes simples , multiplicar, adição, subtração, e divisao,
So que surgiu uma duvida, como fazer ela receber varios tipos de numero,
inteiro, long double, no metodo tenho que criar metodos que recebam os valores pra quando eu chamalos na classe teste ele faça ?
aki vai o codigo

/** @Autor Gustavo 
*/
class Calc {

long x ;

long y;

double num;

double num2;

public long soma(long x , long y ) {

return x + y;

}
public double soma(double num , double num2) {

return num + num2;

}
public long divisao(long x , long y) {

return x / y;

}
public double divisao(double num , double num2 ) {

return num / num2;

}
 public long multiplica(long x , long y) {

 return x * y;

 }
 public double multiplica ( double num, double num2) {

 return num * num2;

 }
 public long subtrae(long x , long y) {

 return x - y;

 }

 public double subtrae( double num, double num2) {

 return num - num2;
 
 }

 }
a classe de Teste
class Tcalc {

public static void main(String args[]) {

Calc c = new Calc();

System.out.println("Soma  de 10 + 20 = " + c.soma(10,20));

System.out.println("soma de 10,0 + 35,9 = " +c.soma(10.0,35.9));

System.out.println("Divisao de 555 / 420 = " + c.divisao(555,420)); // nao sei se é problema ou erro de logica no metodo, mas 555/420 =1,309... e nao somente 1

System.out.println("Divisao de 500,5 / 55.2 = " + c.divisao(500.5,55.2));

System.out.println("Multiplica 100 * 300 = " + c.multiplica(100,300));

System.out.println("multiplica 150,20 * 20 = " + c.multiplica(150.20,20));

System.out.println("Subtrair 140 - 50 = " + c.subtrae(140,50));

System.out.println("Subtrair 150,20 - 53,63 = " + c.subtrae(150.20,53.63));
}
}
E bem na Divisao de 555/420 o resultado da 1 sem mais digitos como poderia arrumar isso ? ou nao precisaria ter um metodo divisao que retorne um long ?

6 Respostas

Gleidson_Henrique

Utilize o tipo Double ao invés de Long.

Abraços

Carlee_Deejay

Penso que um [color=blue]double[/color] vai resolver o seu problema … :wink:

guijocargo

Voce poderia criar um unico metodo para cada divisao e receber dois Objects, dentro do metodo voce usa instanceof pra descobrir o tipo do Object e converter para o que voce quer, algo como:

public Object somar(Object num1, Object num2) { if (num1 instanceof int) { // num1 é um int? int n1 = (int) num1; // ou Integer.valueOf(num1.toString()); if (num2 instanceof int) { int n2 = (int) num2; } else if (num2 instanceof double) { double n2 = (double) num2; // ou Double.valueOf(num1.toString()); } } }

Não sei se compensaria fazer isso, mas é uma maneira, como você esta fazendo em modo texto, poderia usa o método assim: c.somar().toString();

E o problema no seu método de divisão pode ser que seja o tipo de retorno que você esta usando…

Espero ter ajudado em algo :slight_smile:

gusthavosouza

Utilizei o long que no caso ele se encaixa mais facil, pode entrar no long , um inteiro, um, short , um byte, se nao to errado,
mas so nao entendo o por que da divisao nao se encaixar , mas era exatamente isso o long tava dando pal na divisao,

quando chamava ele passando só valores inteiros ele retornava um inteito com uma unica casa decimal

Abçs

Gleidson_Henrique

gusthavosouza:
Utilizei o long que no caso ele se encaixa mais facil, pode entrar no long , um inteiro, um, short , um byte, se nao to errado,
mas so nao entendo o por que da divisao nao se encaixar , mas era exatamente isso o long tava dando pal na divisao,

quando chamava ele passando só valores inteiros ele retornava um inteito com uma unica casa decimal

Abçs

Claro, ele tem que ver o que cabe dentro dele. Se a divisão vai resultar em um valor com casas decimais, ele automaticamente tira os valores de casa decimal, porque o tipo que vai receber não suporta.

Abraços

E

Uma calculadora que receba números de vários tipos? Crie duas - uma científica, que recebe só double, e uma de programadores, que recebe só long.

Criado 13 de outubro de 2012
Ultima resposta 15 de out. de 2012
Respostas 6
Participantes 5