Como calculo expoente x^y?

7 respostas
brunofs8

olá amigos, estou fazendo uma calculadora gráfica no netbeans, mas empaquei na parte de calcular o expoente x^y, e gostaria que você me ajudassem, abiaxo os códigos:

código do botão expoentey

valorraiz = Double.parseDouble(valor.getText()); valor.setText(""); valor.repaint(); opcao = "expoente";

código referente ao botão, no botão igual

if (opcao == "expoente") { resultadoraiz = Double.parseDouble(valor.getText()); resultadodouble = Math.pow(valorraiz, resultadoraiz); valor.setText(""+resultadodouble); valor.repaint(); }

eu consigo inserir os dois números mas ele me retorna o erro abaixo, quando eu clico no igual:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:994) at java.lang.Double.parseDouble(Double.java:510) at projeto.frame.igualActionPerformed(frame.java:525) at projeto.frame.access$2200(frame.java:4) at projeto.frame$23.actionPerformed(frame.java:251) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

7 Respostas

GustavoLaguna

Acho que voce está passando uma string varia para

resultadoraiz = Double.parseDouble(valor.getText());

e isso vai gerar um NumberFormatException

ViniGodoy

Como você está inserindo os números?

Esse erro aí é que ele não está conseguindo transformar seu string num double.

Verifique se vc não trocou o . (ponto) pela , (vírgula).

thegoergen

O erro é de Empty String, talvez não conseguiu pegar o valor…

brunofs8

mas eu digito o primeiro número, clico no botão x^y, ele apaga o que tem na tela e eu digito o segundo número que deveria ser o valor do expoente, e quando clico no igual ele dá o erro …

Como você está inserindo os números?
Esse erro aí é que ele não está conseguindo transformar seu string num double.
Verifique se vc não trocou o . (ponto) pela , (vírgula).

mas eu nem estou utilizando vírgula, já utilizo ponto direto na calculadora…

sim, eu percebo, mas não consigo descobrir como fazer ele pegar o valor …

B
valor.setText(""); 
resultadoraiz = Double.parseDouble(valor.getText());

?

gpd38

Ainda nao sei muito bem fazer com este “metodo” que vc usou, mas quando eu preciso elever um numero a outro eu faço assim.

String msg;
Double numero, expoente, resultado;

msg = "Digite um nuemro para ser a base da potencia ";
numero = Le_numero( msg );

msg = "Digite um numero para ser o expoente da potencia";
expoente = Le_numero( msg );

resultado = Math.pow( numero, expoente );

Comigo isso funcionou

brunofs8

olá, consegui resolver, o que estava ocorrendo, era que no botão igual eu estava pegando um valor float antes dos ifs de cada botão (somar, subtrair, etc) então retirei ssa parte e coloquei pra pegar o segundo valor dentro dos ifs, porque neste caso eu precisava de um double, mas eu agradeço a ajuda de vocês

Criado 25 de abril de 2008
Ultima resposta 26 de abr. de 2008
Respostas 7
Participantes 6