SrFabioPJ 14 de jul. de 2007
É possível utilizar operadores com doubles, esse erro não faz sentido nenhum. De testar e funcionou. Experimenta meter parte decimal:
double a , b , c ;
a = 1.0 ;
b = 2.0 ;
c = a + b ;
Não creio que o problema derive daí…mas de qualquer forma não custa testares.
thundercasPJ 14 de jul. de 2007
Eu estava verificando aqui, e percebi que o compilador exibe um erro na conversão de String para Double. Ele diz:
Não entendi porque ele não aceitou a conversão de String para Double.
Este erro é referente ao código abaixo:
import javax.swing.* ;
import java.awt.* ;
import java.awt.Container ;
import java.awt.event.* ;
public class Exe1 extends JApplet implements ActionListener {
JLabel celLabel , farLabel , resLabel ;
JTextField celField , farField , resField ;
JTextArea tela = new JTextArea ();
String sN1 , mensagem ;
Double dN1 , res ;
public void init () {
Container c = getContentPane ();
c . setLayout ( new FlowLayout ());
celLabel = new JLabel ( "Celsius: " );
c . add ( celLabel );
celField = new JTextField ( "5" );
c . add ( celField );
celField . addActionListener ( this );
farLabel = new JLabel ( "Fahrenheit: " );
c . add ( farLabel );
farField = new JTextField ( "5" );
c . add ( farField );
farField . addActionListener ( this );
resLabel = new JLabel ( "Resultado: " );
c . add ( resLabel );
resField = new JTextField ( "5" );
resField . setEditable ( false );
c . add ( resField );
}
public void ActionPerformed ( ActionEvent converter ) {
if ( converter . getSource () == celField ){
dN1 = Double . parseDouble ( celField . getText ());
res = dN1 - 32 ;
}
else
{
//CÓDIGO 02
}
}
}
Obrigado!!
SrFabioPJ 14 de jul. de 2007
Tenta converter deste modo:
double d = Double . valueOf ( celField . getText ()). doubleValue ();
No teu caso o erro que ocorre é porque o retorno do método parseDouble() é um OBJECTO e efectivamente o que tinha de ser retornado era um VALOR do tipo double para poder ser atribuído á variável “d”. O método que sugeri retorna um VALOR double e portanto é compatível.
Espero ter ajudado
thundercasPJ 15 de jul. de 2007
Cara, fiz o que você me pediu e não deu certo. Continuou dando o mesmo erro.
Mas pelo que entendi, o celField recebe por padrão um valor String, certo?? Eu simplesmente estou convertendo este valor em Double e passando-o para a variável d. Não entendi o porquê do erro.
SrFabioPJ 15 de jul. de 2007
Bom, na verdade qualquer um dos métodos deveria resultar…a conversão é de facto possível e estás a proceder correctamente. Em todo o caso nunca é demais exprimentar outro método:
Double d = new Double ( celField . getText ());
Pelo menos a mim não ocorre qualquer erro de incompatibilidade de tipos. O exemplo que utilizei para exprimentar:
class doubl {
static String s = "2.45543" ;
public static void main ( String args [] ) {
double d0 = Double . valueOf ( s ). doubleValue ();
System . out . println ( d0 );
double d1 = Double . parseDouble ( s );
Double d = new Double ( s );
System . out . println ( d1 );
System . out . println ( d );
}
}
Funcionou perfeitamente.
carlosjrcabeloPJ 16 de jul. de 2007
Ola,
Eu tambem testei esse codigo aqui e funcionou blzinha. Voce tem certeza se a sua maquina virtual está bem instalada ?
Vlw
thundercasPJ 16 de jul. de 2007
Pow, já fiz vários códigos semelhantes e nunca deu problema. Tentei o que disseram e ocorreu o seguinte erro:
Não sei mais o que fazer = /
SrFabioPJ 17 de jul. de 2007
Tenta assim:
Qual é a tua máquina virtual?
thundercasPJ 21 de jul. de 2007
Não deu certo… eu uso Win98 + JDK 4.2.0
SrFabioPJ 21 de jul. de 2007
Hum…esse erro não é de todo suposto acontecer. Mas deu o mesmo erro ou já foi outro?
Tenta fazer isto: res = (double) dN1 - 32.0;
thundercasPJ 23 de jul. de 2007
Caraca!!! Galera, achei o erro!!!
Eu estava definindo as variáveis do tipo DOUBLE como Double ao invés de double. Putsa erro besta!!! Mas valeu galera, desculpe o transtorno, abraços!!