Math [RESOLVIDO]

Tô com um pequeno problema, na class Math meu programa ta dando erro.

[code]public class Geometria {

public double hipotenusa (double a, double b){

	double soma = sqr(a) + sqr(b);
	double hip = sqrt (soma);
		return hip;

}
}[/code]

Vlw :smiley:

você fez o import??

qual o erro que dá??

[quote=Rooney]Tô com um pequeno problema, na class Math meu programa ta dando erro.

[code]public class Geometria {

public double hipotenusa (double a, double b){

	double soma = sqr(a) + sqr(b);
	double hip = sqrt (soma);
		return hip;

}
}[/code]

Vlw :smiley: [/quote]

Primeiro : vc tem que declarar java.lang.Math com import static ou usar a chamada estática padrão.
Segundo: no java 5 e maior existe uma função hypot(double x, double y) que calcula a hipotenusa sem calcular os quadrados.
Terceiro : a hipotenusa é a soma dos quadrados e não das raizes como vc está fazendo
Quarto: se o numero é negativo a raiz quadrada dá erro.

finalmente: sempre que vc postar uma duvida sobre um erro, informe qual foi o erro.

Olá

Algumas considerações

  1. Java é uma linguagem OO. Portanto, não aceita que “funções” sejam jogadas no meio do código.
    Para acessar as funcionalidades de um método em Java, vc deve escrever o nome da classe a que pertence aquele método, “.” e, finalmente o nome do método; se ele for estático.

  2. O método sqr não existe. Se vc quer quer calcular o quadrado do número, deve usar o método Math.pow(num, 2);. Para calcular a raiz utilize Math.sqrt(num);

ok?

[code]public class Geometria {

public double hipotenusa(double a, double b) {

	double soma = Math.pow(a,2) + Math.pow(b, 2);
	double hip = Math.sqrt(soma);
	return hip;
}

}[/code]

[quote=renamed]1) Java é uma linguagem OO. Portanto, não aceita que “funções” sejam jogadas no meio do código.
Para acessar as funcionalidades de um método em Java, vc deve escrever o nome da classe a que pertence aquele método, “.” e, finalmente o nome do método; se ele for estático.[/quote]

Nope. Você pode usar métodos estáticos de uma classe diretamente, através do import static. É só declarar:

import static java.lang.Math;

De qualquer jeito, fazer uma classe como a Math, só com métodos estáticos não é nada OO. Não é muito diferente de se ter um namespace com funções dentro, como no caso do C++.

Verdade. Outra forma de calcular o quadrado é simplesmente fazer num*num, que muitas vezes fica mais claro que Math.pow(num, 2);

[quote]
Olá

Algumas considerações

  1. Java é uma linguagem OO. Portanto, não aceita que “funções” sejam jogadas no meio do código.
    Para acessar as funcionalidades de um método em Java, vc deve escrever o nome da classe a que pertence aquele método, “.” e, finalmente o nome do método; se ele for estático.

  2. O método sqr não existe. Se vc quer quer calcular o quadrado do número, deve usar o método Math.pow(num, 2);. Para calcular a raiz utilize Math.sqrt(num);

ok? [/quote]

Obrigado mano do seu jeito deu certo.

Vlw mesmo, pq só tem cara q gosta de criticar.

[quote=ViniGodoy]
De qualquer jeito, fazer uma classe como a Math, só com métodos estáticos não é nada OO. Não é muito diferente de se ter um namespace com funções dentro, como no caso do C++.[/quote]

Hum… como seria então uma classe como a math OO ?

Não seria. É um exemplo de coisa que a programação estruturada se encaixa melhor do que a orientada a objetos.

Em todo caso, poderiamos pensar num strategy, para implementar diferentes métodos de cálculo.

[quote=ViniGodoy][sergiotaborda]Hum… como seria então uma classe como a math OO ?
Não seria. É um exemplo de coisa que a programação estruturada se encaixa melhor do que a orientada a objetos.
[/quote]
Não concordo !!!

[quote]
Em todo caso, poderiamos pensar num estrategy, para implementar diferentes métodos de cálculo. [/quote]
Pode ser !!!