Como utilizar operadores em Double

11 respostas
T

Galera, me deparei com uma situação relativamente simples, mas que definitivamente não entendi.

Fiz um código simples:

double a, b, c;
a = 1;
b = 2;
c = a + b;

O sistema me retorna um erro dizendo que não é possível utilizar operadores em Double. Qual a lógica nisto??? Obrigado!!

11 Respostas

S

É 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.

:wink:

T

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!!

S

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 :slight_smile:

T

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.

S

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.

C

Ola,

Eu tambem testei esse codigo aqui e funcionou blzinha. Voce tem certeza se a sua maquina virtual está bem instalada ?

Vlw

T

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 = /

S

Tenta assim:

res = dN1 - 32.0;

Qual é a tua máquina virtual?

T

Não deu certo… eu uso Win98 + JDK 4.2.0

S

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;

T

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!!

Criado 14 de julho de 2007
Ultima resposta 23 de jul. de 2007
Respostas 11
Participantes 3